sql 存储过程 几个 简单例子,及在asp.net(C#)中调用存储过程的代码

来源:互联网 发布:win7 资源管理器 软件 编辑:程序博客网 时间:2024/05/01 02:29
 
      存储过程既可以在查询分析器中编写,也可以在企业管理器中编写。最重要是学会其语法。SQL Sever 联机帮助中有详细的说明。

例1:

create proc proc_stu
@sname varchar(20),
@pwd varchar(20)
as
select * from ren where sname=@sname and pwd=@pwd
go

查看结果:proc_stu 'admin','admin'

在asp.net中调用存储过程代码:

        int i = 2;
        string ConnStr = "server=.;database=doc;uid=sa;pwd=admin;";
        SqlConnection conn = new SqlConnection(ConnStr);
        SqlCommand comm = new SqlCommand("proc_stu", conn);        //建立一个命令
        comm.CommandType = CommandType.StoredProcedure;          //说明执行的是一个存储过程

        comm.Parameters.Add(new SqlParameter("@sname", SqlDbType.Char, 20));    //定义一个存储过程变量
        comm.Parameters["@sname"].Value = "admin";          //给存储过程变量赋值

        comm.Parameters.Add(new SqlParameter("@pwd", SqlDbType.Char, 20));    //定义一个存储过程变量
        comm.Parameters["@pwd"].Value = "admin";

        comm.Connection.Open();                //打开连接

        try
        {
           i= (int)comm.ExecuteScalar();               // ExecuteScalar:返回第一行第一列值       
        }
        catch (SqlException er)
        {
            Response.Write(er.ToString());             //向上一级抛异常
        }
        finally
        {
            comm.Connection.Close();
            conn.Close();
        }
        Response.Write(i.ToString());

例2:

下面的存储过程实现用户验证的功能,如果不成功,返回0,成功则返回1.

CREATE PROCEDURE VALIDATE @USERNAME CHAR(20),@PASSWORD CHAR(20),@LEGAL BIT OUTPUT
AS

IF EXISTS(SELECT * FROM REN WHERE SNAME = @USERNAME AND PWD = @PASSWORD)
SELECT @LEGAL = 1
ELSE
SELECT @LEGAL = 0

在程序中调用该存储过程,并根据@LEGAL参数的值判断用户是否合法。

.net 中显示返回值主要代码

        comm.Parameters.Add("@LEGAL", 0);
        comm.Parameters["@LEGAL"].Direction = ParameterDirection.Output;

            comm.ExecuteNonQuery();    //ExecuteNonQuery:返回影响的行数

            i = (int)comm.Parameters["@LEGAL"].Value;   

           Response.Write(i.ToString());

例3:一个高效的数据分页的存储过程 可以轻松应付百万数据

CREATE PROCEDURE pageTest --用于翻页的测试
--需要把排序字段放在第一列

(
@FirstID nvarchar(20)=null, --当前页面里的第一条记录的排序字段的值
@LastID nvarchar(20)=null, --当前页面里的最后一条记录的排序字段的值
@isNext bit=null,    --true 1 :下一页;false 0:上一页
@allCount int output,   --返回总记录数
@pageSize int output,   --返回一页的记录数
@CurPage int     --页号(第几页)0:第一页;-1最后一页。
)

AS

if @CurPage=0
begin
--统计总记录数
select @allCount=count(ProductId) from Product_test
  
set @pageSize=10
--返回第一页的数据
select top 10
   ProductId,
   ProductName,
   Introduction  
   from Product_test order by ProductId
end

else if @CurPage=-1

select * from
(select top 10 ProductId,
   ProductName,
   Introduction

from Product_test order by ProductId desc ) as aa
order by ProductId
else

begin
if @isNext=1
   --翻到下一页
   select top 10 ProductId,
   ProductName,
   Introduction
from Product_test where ProductId > @LastID order by ProductId
  
  
else
   --翻到上一页
   select * from
    (select top 10 ProductId,
   ProductName,
   Introduction
from Product_test where ProductId < @FirstID order by ProductId desc) as bb order by ProductId
end

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买的裙子因为好看没有勇气穿怎么办 魅蓝s6锁屏密码忘了怎么办 u盘被占用不能安全弹出怎么办 洛克王国得到了魔攻巨蟹座怎么办 在育碧下载游戏下一半不下了怎么办 轩辕传奇单机版忘记哪个区了怎么办 登腾讯游戏动态密码啥意思怎么办 说了不该说的话别人不原谅怎么办 轩辕传奇手游金币用错了怎么办 神秘时代4法杖按键冲突怎么办 孕2个月发烧38度怎么办 不知道怀孕喝了止咳糖浆怎么办? 小孩刮头发的备皮刀割住手怎么办? 天梭手表里面的刻度掉了怎么办 国战天下手游帐号丢失怎么办 肺力咳合剂一次喝了50多了怎么办 头孢和藿香正气水一起吃了怎么办 小儿胃蛋自酶合剂吃多了怎么办 刚出生的婴儿很容易被惊醒怎么办 1个多月的宝宝小腿不直怎么办 20个月宝宝腿不直小腿外八怎么办 小孩手青枝骨骨折拆石膏还弯怎么办 宝宝喝柴胡注射剂有不良反应怎么办 九个月宝宝便秘拉不出来怎么办 一岁四个月的宝宝便秘怎么办 热血三国3要塞打不过去怎么办 清香木夏天有黄叶和掉叶怎么办 生完宝宝妊娠纹还在继续疯长怎么办 陌陌不能最小化观看直播视频怎么办 苏州园区公积金密码忘记了怎么办 房产企业申请破产买的房子怎么办 被业务员骗了买了保险怎么办 孩子特别害怕老师严厉的批评怎么办 4k电视看有线电视不清晰怎么办 移动9.9流量4g网用完了怎么办 东方头条验证码已经被注册了怎么办 打王者两个人吵架被夹在中间怎么办 顾客拿过期的食品过来投诉怎么办 老婆总是埋怨我父母我该怎么办? 代款公司如果使用暴力追债怎么办 法院拍卖款分配有疑意怎么办