我想在C#中调用存储过程或者函数的返回集,但是老是报错
在PLSQL中是正常的。C#老是在da.Fill(ds);报错==>
System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GETINFO'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
在 System.Data.Oracle以下是小弟的代码:OracleCommand cmd = new OracleCommand();
cmd.CommandText = "Pkg_test2.getInfo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = oracleCon; OracleParameter cursor = new OracleParameter("my_type", OracleType.Cursor);
cursor.Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add(cursor); System.Data.OracleClient.OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
CREATE OR REPLACE package Pkg_test2
is
TYPE my_type is ref cursor;
PROCEDURE getInfo(mycs out my_type);
END; CREATE OR REPLACE package BODY Pkg_test2
IS
PROCEDURE getInfo(mycs out my_type)IS
BEGIN
OPEN mycs for select * from DRIVER_MST;
END getInfo;END Pkg_test2;
在PLSQL中是正常的。C#老是在da.Fill(ds);报错==>
System.Data.OracleClient.OracleException: ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GETINFO'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
在 System.Data.Oracle以下是小弟的代码:OracleCommand cmd = new OracleCommand();
cmd.CommandText = "Pkg_test2.getInfo";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = oracleCon; OracleParameter cursor = new OracleParameter("my_type", OracleType.Cursor);
cursor.Direction = System.Data.ParameterDirection.Output; cmd.Parameters.Add(cursor); System.Data.OracleClient.OracleDataAdapter da = new OracleDataAdapter();
da.SelectCommand = cmd;
DataSet ds = new DataSet();
da.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
CREATE OR REPLACE package Pkg_test2
is
TYPE my_type is ref cursor;
PROCEDURE getInfo(mycs out my_type);
END; CREATE OR REPLACE package BODY Pkg_test2
IS
PROCEDURE getInfo(mycs out my_type)IS
BEGIN
OPEN mycs for select * from DRIVER_MST;
END getInfo;END Pkg_test2;
应该是类型不匹配
试下这,手写的可能不对,你试试:
OracleParameter cursor = new OracleParameter("my_type", OracleType.Cursor);
cursor.Direction = System.Data.ParameterDirection.Output;
cmd.Parameters.Add(cursor);
----〉----〉----〉
cmd.Parameters.Add("my_type",OracleType.Cursor);
cmd.Parameters.Direction = ParameterDirection.Output;