Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.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/2/.net/21.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函数(vs 2012)_C#_.net_Oracle - Fatal编程技术网

如何从C#运行Oracle函数(vs 2012)

如何从C#运行Oracle函数(vs 2012),c#,.net,oracle,C#,.net,Oracle,我正在尝试运行我在Oracle中拥有的功能,我从未使用过Oracle,只使用过sql2008 sow,我在这方面是新手 这里是Oracle中我需要调用并返回integer的函数: create or replace function vb_new_serial return integer is Result integer; begin select vbserial.nextval into result from dual; return(Result); end vb_ne

我正在尝试运行我在Oracle中拥有的功能,我从未使用过Oracle,只使用过sql2008 sow,我在这方面是新手

这里是Oracle中我需要调用并返回integer的函数:

create or replace function vb_new_serial return integer is
  Result integer;
begin
  select  vbserial.nextval into result from dual;
  return(Result);
end vb_new_serial;
此函数不获取任何内容,只需重新运行整数即可

我尝试了这个,但我发现错误
PLS-00221:“VB\u NEW\u SERIAL”不是一个过程或是未定义的

  using (System.Data.OracleClient.OracleConnection con = new System.Data.OracleClient.OracleConnection(strConn2))
    {
        con.Open();
        System.Data.OracleClient.OracleCommand cmd = new System.Data.OracleClient.OracleCommand("vb_new_serial");
        cmd.CommandType = System.Data.CommandType.StoredProcedure;
        //System.Data.OracleClient.OracleParameter returnVal = new System.Data.OracleClient.OracleParameter("value", null);
       // cmd.Parameters.Add(returnVal);
        cmd.Connection = con;
        System.Data.OracleClient.OracleDataReader odr = cmd.ExecuteReader();//here i have error
        while (odr.Read())
        {
            Console.WriteLine(odr.GetOracleValue(0));
        }
        Console.ReadLine();
    }

我做错了什么?

您定义的第一个参数应该是返回值:

cmd.Parameters.Add("Return_Value", OracleDbType.Int32, ParameterDirection.ReturnValue);

你看过这个了吗?你确定你的身份是正确的吗?可能是错误的模式或缺少包
MY_PKG.VB_NEW_SERIAL
?是的,我看到了那篇文章,我确信我选中了它,我尝试了所有功能。VB_NEW_SERIAL…和更多组合我正在使用System.Data.OracleClient,当我添加它时,我没有,ParameterDirection.ReturnValue,如果我将其更改为Oracle.DataAccess.Client,我将得到错误-PLS-00201:“VB\U NEW\U SERIAL”必须被声明是否确实缺少
ParameterDirection
的命名空间?将这些放在源文件的顶部:
使用System.Data;使用System.Data.SqlClient如果我使用的是Oracle.DataAccess.Client而不是System.Data.OracleClient,则所有文件都会编译,但如果使用的是System.Data.OracleClient或acledbtype和ParameterDirection.ReturnValue,则需要将其更改为cmd.Parameters.Add(“Result”,System.Data.OracleClient.OracleType.Int16,1);将全部更改为Oracle.DataAccess.Client并添加了代码,在本地pc上不工作,但在服务器pc(需要的地方)上开始工作,thanx。