有如下定义的一个分页存储过程:
CREATE PROCEDURE sp_page
@tb varchar(50), --表名
@col varchar(50), --按该列来进行分页
@coltype int, --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
@orderby bit, --排序,0-顺序,1-倒序
@collist varchar(800),--要查询出的字段列表,*表示全部字段
@pagesize int, --每页记录数
@page int, --指定页
@condition varchar(800),--查询条件
@records int OUTPUT --总页数我是通过DataReader来执行此存储过程.
其它参数定义.
parameter["@records"].direciton=ParameterDireciton.Output; SqlDataReader dr1=cmd1.ExecuteReader ();
//cmd1.ExecuteNonQuery ();
DataGrid1.VirtualItemCount =int.parser(Parameter["@records"].value.tostring());并同时希望能将@records这个output变量取值赋于DataGrid1.VirtualItemCount,但在实际操作中发现
取不到这个值,只有用cmd1.executenonquery才可以.那我要怎么样才可以得到这个output返回值呢?
CREATE PROCEDURE sp_page
@tb varchar(50), --表名
@col varchar(50), --按该列来进行分页
@coltype int, --@col列的类型,0-数字类型,1-字符类型,2-日期时间类型
@orderby bit, --排序,0-顺序,1-倒序
@collist varchar(800),--要查询出的字段列表,*表示全部字段
@pagesize int, --每页记录数
@page int, --指定页
@condition varchar(800),--查询条件
@records int OUTPUT --总页数我是通过DataReader来执行此存储过程.
其它参数定义.
parameter["@records"].direciton=ParameterDireciton.Output; SqlDataReader dr1=cmd1.ExecuteReader ();
//cmd1.ExecuteNonQuery ();
DataGrid1.VirtualItemCount =int.parser(Parameter["@records"].value.tostring());并同时希望能将@records这个output变量取值赋于DataGrid1.VirtualItemCount,但在实际操作中发现
取不到这个值,只有用cmd1.executenonquery才可以.那我要怎么样才可以得到这个output返回值呢?
解决方案 »
- vs2008专业版安装提示cab15.cab数字签名无效?
- 求教~~ [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1
- 关于应用程序错误的问题!500 0 0
- repeater 显示数据
- Winform下的Treeview为什么没有SelectedNode.value? 如果我要根据节点取Id什么的怎么取呢?
- 关于使用GoldPrinter v1.0在网页使用请教。谢谢
- 如何引發一個button的事件在ASP.NET的Codebehind代碼中
- 请问在 javascript 里绑定 datagrid 的代码怎么写~
- 在datalist中怎样加一个排名
- 客户端写入XML的难题
- 文本框是否可以添加其他事件呢???
- 求救 有关DATAGRID分页的问题
这样区值
dim inttemp as integer=cmd1.Parameters("@records").Value你把上面的代码转换成C#就好了
但是我是要执行ExecuteReader,而不是executeNonquery那要如何取得值呢?之前已经知道executenonquery可以取得变量值,关键是executereader取不到值.
然后用 像这个样子取值:dr1("records")
就不用定义这个@records这个输出参数了
你说的方法,仍然无法取得数据啊,
因为dr1中只能有一个表的吧,如果用了你语句,则后面的查询出的记录集就无法在Dr1中显示出来了.想问一个问题,如果在存储过程中会返回多个表,则执行executereader后,dr1中是只有一个表还会有全部表.如果是全部表,则如何检索各个表呢?
CREATE OR REPLACE PACKAGE CURSPKG AS
TYPE T_CURSOR IS REF CURSOR;
PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,
DEPTCURSOR OUT T_CURSOR);
END CURSPKG;CREATE OR REPLACE PACKAGE BODY CURSPKG AS
PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,
DEPTCURSOR OUT T_CURSOR)
IS
BEGIN
OPEN EMPCURSOR FOR SELECT * FROM DEMO.EMPLOYEE;
OPEN DEPTCURSOR FOR SELECT * FROM DEMO.DEPARTMENT;
END OPEN_TWO_CURSORS;
END CURSPKG;
以下代码使用 OracleDataReader 的 Read 和 NextResult 方法返回先前命令的结果。REF CURSOR 参数按顺序返回。oraConn.Open();OracleCommand cursCmd = new OracleCommand("CURSPKG.OPEN_TWO_CURSORS", oraConn);
cursCmd.CommandType = CommandType.StoredProcedure;
cursCmd.Parameters.Add("EMPCURSOR", OracleType.Cursor).Direction = ParameterDirection.Output;
cursCmd.Parameters.Add("DEPTCURSOR", OracleType.Cursor).Direction = ParameterDirection.Output;OracleDataReader rdr = cursCmd.ExecuteReader();Console.WriteLine("\nEmp ID\tName");while (rdr.Read())
Console.WriteLine("{0}\t{1}, {2}", rdr.GetOracleNumber(0), rdr.GetString(1), rdr.GetString(2));rdr.NextResult();Console.WriteLine("\nDept ID\tName");while (rdr.Read())
Console.WriteLine("{0}\t{1}", rdr.GetOracleNumber(0), rdr.GetString(1));rdr.Close();
oraConn.Close();
使用DataReader是不能得到Output变量的,但使用DataAdapter可以,我已经用它实现了.