Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C#错误运行Oracle存储过程_C#_Oracle_Stored Procedures - Fatal编程技术网

从C#错误运行Oracle存储过程

从C#错误运行Oracle存储过程,c#,oracle,stored-procedures,C#,Oracle,Stored Procedures,我是甲骨文的新手。我创建了一个存储过程来获取表数据 create or replace procedure GETLATESTNEWS(cv_results in out sys_refcursor) as begin open cv_results for select news from tbl_newsdetails; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE_APPLICATION_ERROR(-99999,'Not Inserted

我是甲骨文的新手。我创建了一个存储过程来获取表数据

create or replace
procedure GETLATESTNEWS(cv_results in out sys_refcursor)
as
begin
open cv_results for
select news from tbl_newsdetails;
EXCEPTION
 WHEN OTHERS THEN
  ROLLBACK;
  RAISE_APPLICATION_ERROR(-99999,'Not Inserted due to :'||SQLERRM);  
end;
程序编译成功。但是在我的.net代码中,我得到了一个错误

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'GETLATESTNEWS'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我的.net代码是

con.ConnectionString = constring;
con.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = con;
cmd.CommandText = "GETLATESTNEWS";
cmd.CommandType = CommandType.StoredProcedure;
rdr = cmd.ExecuteReader();
可能是什么问题?。我能够使用insert存储过程进行插入。但是select不起作用

尝试添加:

cmd.Parameters.Add("cv_results", OracleDbType.RefCursor).Direction = ParameterDirection.Output;
尝试添加:

cmd.Parameters.Add("cv_results", OracleDbType.RefCursor).Direction = ParameterDirection.Output;

我用过这个,它对我有用

OracleCommand oraCommand = new OracleCommand();
oraCommand.Connection = oraConnection;
oraCommand.CommandType = CommandType.StoredProcedure;
oraCommand.CommandText = "procedurename";
OracleParameter oraParameter = new OracleParameter(":result", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
oraCommand.Parameters.Add(oraParameter);
oraCommand.ExecuteNonQuery();

OracleDataAdapter oraDataAdapter = new OracleDataAdapter(oraCommand);
Oracle.DataAccess.Types.OracleRefCursor refCursor = (Oracle.DataAccess.Types.OracleRefCursor)oraParameter.Value;
OracleDataReader reader = refCursor.GetDataReader();

但如果将存储过程作为ref\u cursor返回。

我使用了它,它对我有效

OracleCommand oraCommand = new OracleCommand();
oraCommand.Connection = oraConnection;
oraCommand.CommandType = CommandType.StoredProcedure;
oraCommand.CommandText = "procedurename";
OracleParameter oraParameter = new OracleParameter(":result", OracleDbType.RefCursor, ParameterDirection.ReturnValue);
oraCommand.Parameters.Add(oraParameter);
oraCommand.ExecuteNonQuery();

OracleDataAdapter oraDataAdapter = new OracleDataAdapter(oraCommand);
Oracle.DataAccess.Types.OracleRefCursor refCursor = (Oracle.DataAccess.Types.OracleRefCursor)oraParameter.Value;
OracleDataReader reader = refCursor.GetDataReader();

但如果您将存储过程作为ref\u cursor返回。

您的存储过程需要一个参数(sys\u refcursor),但您没有传递任何内容。请勾选“好”。我会阅读并让您知道。请。请记住,链接只是为了告诉您问题所在。您应该进一步调查,因为Microsoft Oracle.NET提供程序现在已被弃用,您应该使用OracleSteve提供的最新版本。这是我这边的一个错误。事实上,我非常习惯使用sqlserver。所以突然搬家引起了这个问题。它现在工作得很好。非常感谢史蒂夫:)您的存储过程需要一个参数(sys_refcursor),但您没有传递任何内容。请勾选“好”。我会阅读并让您知道。请。请记住,链接只是为了告诉您问题所在。您应该进一步调查,因为Microsoft Oracle.NET提供程序现在已被弃用,您应该使用OracleSteve提供的最新版本。这是我这边的一个错误。事实上,我非常习惯使用sqlserver。所以突然搬家引起了这个问题。它现在工作得很好。非常感谢史蒂夫:)