sql server 创建 "存储过程" 与C#调用

参考文档:C#调用存储过程简单完整例子
**

sql server<存储过程>创建

**

创建sql server存储过程(先大概看一下,当预习)

--创建分页查询<存储过程>
create proc usp_fenye
@pagesize int=3, --每页记录的条数
@index int=1,    --当前查看第几页的内容
@recordcount int output, --总的条数
@pagecount int output --总的页数
as
begin
    --分页
    select *
        
    from (select *,rn=row_number() over(order by id asc) from WebApiData.dbo.[userdata]) as t
    where t.rn between (@index-1) * @pagesize + 1 and @pagesize * @index
    --计算总的条数
    set @recordcount =( select count(*) from WebApiData.dbo.[userdata])
    --计算总的页数
    set @pagecount=ceiling(@recordcount * 1.0 / @pagesize)  --ceiling向上取整
end
go

创建成功后会在这里显示
在这里插入图片描述
注意: 没有的话就刷新一下,还没有的话就确认一下你创建到那个数据库了

  • 存储过程名
    usp_fenye:就是它的<存储过程>名,执行的时候需要用到.
--分页查询
create proc usp_fenye
  • 入参,出参
    后面带output的是出参
@pagesize int=3, --每页记录的条数
@index int=1,    --当前查看第几页的内容
@recordcount int output, --总的条数
@pagecount int output --总的页数
  • 主体
    begin 和end可以看成{ } 他们之间放的是你需要写的逻辑判断,数据查询修改等.
begin
    ----分页
    --select *
        
    --from (select *,rn=row_number() over(order by id asc) from WebApiData.dbo.[userdata]) as t
    --where t.rn between (@index-1) * @pagesize + 1 and @pagesize * @index
    ----计算总的条数
    --set @recordcount =( select count(*) from WebApiData.dbo.[userdata])
    ----计算总的页数
    --set @pagecount=ceiling(@recordcount * 1.0 / @pagesize)  --ceiling向上取整
end

**

在SQL server中执行<存储过程>

**

--定义变量,接收出参
declare @x int,@y int
--执行<存储过程>
exec WebApiData.dbo.usp_fenye 4, "1", @x output,@y output
--显示出参值
select @x as '总条数' ,@y as '总页数'
go

执行结果
在这里插入图片描述
**

在C#中调用<存储过程>

**

		//用来接收查询结果
		public static DataTable MyDataTab = new DataTable();

        public static void Page_Load( string[] retLab)
        {
            
            String DBConnStr = "Data Source=localhost;Initial Catalog=WebApiData;integrated security=SSPI;";
        
            SqlDataAdapter DataAdapter = new SqlDataAdapter();
            SqlConnection myConnection = new SqlConnection(DBConnStr);
            
            if (myConnection.State != ConnectionState.Open)
            {
                myConnection.Open();
            }
            //"usp_fenye" : <存储过程>名
            SqlCommand myCommand = new SqlCommand("usp_fenye", myConnection);
            //更改为执行存储过程,默认为sql语句
            myCommand.CommandType = CommandType.StoredProcedure;
            
            //添加输入查询参数、赋予值
            //SqlDbType.Int 数据类型
            myCommand.Parameters.Add("@pagesize", SqlDbType.Int);
            myCommand.Parameters["@pagesize"].Value = "4";

            myCommand.Parameters.Add("@index", SqlDbType.Int);
            myCommand.Parameters["@index"].Value = "1";

            
            //添加输出参数
            myCommand.Parameters.Add("@recordcount", SqlDbType.Int);
            myCommand.Parameters["@recordcount"].Direction = ParameterDirection.Output;

            myCommand.Parameters.Add("@pagecount", SqlDbType.Int);
            myCommand.Parameters["@pagecount"].Direction = ParameterDirection.Output;


			//执行
            myCommand.ExecuteNonQuery();
            
            
            //获取输出参数值
            retLab[0] = myCommand.Parameters["@recordcount"].Value.ToString();
            retLab[1] = myCommand.Parameters["@pagecount"].Value.ToString();

            DataAdapter.SelectCommand = myCommand;

            if (MyDataTab != null)
            {
            	//获取执行结果
                DataAdapter.Fill(MyDataTab);
            }

        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值