存储过程参数输入输出
生活随笔
收集整理的這篇文章主要介紹了
存储过程参数输入输出
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
create procedure proc_page_withtopmax
(
@pageIndex int,--頁索引
@pageSize int,--每頁顯示數
@pageCount int output,--總頁數,輸出參數
@totalCount int output--總條數
)
as
begin
set nocount on;declare @sql nvarchar(1000)
set @sql='select top 10 * from tb_testtable where (id> (select max(id) from (select top '+str((@pageIndex-1)*@pageSize)+' id from tb_testtable order by id) as temp)) order by id'
execute(@sql)declare @sqlRecordCount nvarchar(1000) --得到總記錄條數的語句
set @sqlRecordCount=N'select @recordCount=count(*) from tb_testtable'
declare @recordCount int --保存總記錄條數的變量
exec sp_executesql @sqlRecordCount,N'@recordCount int output',@recordCount outputif( @recordCount % @pageSize = 0) --如果總記錄條數可以被頁大小整除
set @pageCount = @recordCount / @pageSize --總頁數就等于總記錄條數除以頁大小
else --如果總記錄條數不能被頁大小整除
set @pageCount = @recordCount / @pageSize + 1 --總頁數就等于總記錄條數除以頁大小加1set @totalCount = @recordCountset nocount off;
end--數據庫中執行該存儲過程
declare @pageCount int, @totalCount intexec proc_page_withtopmax 2,95955,@pageCount output,@totalCount outputselect '總頁數:'+str(@pageCount)
select '總條數:'+str(@totalCount)C# 代碼調用該帶輸入輸出參數的分頁存儲過程public static DataSet GetRecordByPage( int pageSize, int pageIndex, out int pageCount, out int totalCount)
{
DataSet ds = new DataSet();
try
{
using (SqlConnection conn = new SqlConnection(@"server=;database=data_test;uid=; pwd=;"))
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@pageSize", SqlDbType.Int));
cmd.Parameters.Add(new SqlParameter("@pageIndex", SqlDbType.Int));
SqlParameter param = new SqlParameter("@totalCount", SqlDbType.Int);
param.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param);SqlParameter param1 = new SqlParameter("@pageCount", SqlDbType.Int);
param1.Direction = ParameterDirection.Output;
cmd.Parameters.Add(param1);cmd.Parameters[0].Value = pageSize;
cmd.Parameters[1].Value = pageIndex;
cmd.Parameters[2].Value = 0;
cmd.Parameters[3].Value = 0;cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "proc_page_withtopmax";
cmd.CommandTimeout = 180;SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;DataSet source = new DataSet();
adapter.Fill(ds);object o = cmd.Parameters["@totalCount"].Value;
totalCount = (o == null || o == DBNull.Value) ? 0 : System.Convert.ToInt32(o);object b = cmd.Parameters["@pageCount"].Value;
pageCount = (b == null || o == DBNull.Value) ? 0 : System.Convert.ToInt32(b);
}
}
catch (SqlException e)
{
throw e;
}
return ds;
}}
?
?
轉載于:https://www.cnblogs.com/ChineseMoonGod/p/4663717.html
總結
以上是生活随笔為你收集整理的存储过程参数输入输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux网络基础设施配置
- 下一篇: Atitit.异步编程 java .ne