1,package以及存储CREATE OR REPLACE PACKAGE PKG_RTN AS
TYPE RESULT_TYPE IS REF CURSOR;END PKG_RTN;CREATE OR REPLACE PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE) IS
BEGIN
OPEN RS_DATA FOR
SELECT * FROM A;
END;2,C#代码:
try
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "returnT"; OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds); }catch(Exception ex)
{
}Ex的message如下:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'RETURNT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored请指点
TYPE RESULT_TYPE IS REF CURSOR;END PKG_RTN;CREATE OR REPLACE PROCEDURE RETURNT(RS_DATA IN OUT PKG_RTN.RESULT_TYPE) IS
BEGIN
OPEN RS_DATA FOR
SELECT * FROM A;
END;2,C#代码:
try
{
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = "returnT"; OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds); }catch(Exception ex)
{
}Ex的message如下:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'RETURNT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored请指点
http://topic.csdn.net/t/20030821/11/2172125.html
package body的代码,这个要怎么写啊,我不明白,我是拿别人的例子参考的,请指正。谢谢!
cmd.Connection = conn;
conn.Open(); cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "PKG_RTN.RETURNT"; //关键要加这句
//rs_data 在Procedure要返回的游标参数
cmd.Parameters.Add("rs_data", OracleType.Cursor).Direction = ParameterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds); DataTable dtTable = ds.Tables[0]; foreach(DataRow dtRow in dtTable.Rows)
{
string test = dtRow["contractid"].ToString();
}