参考文档: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);
}
}