Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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# 如何使用ODBC在C中获取oracle SQL函数返回?_C#_Sql_.net_Oracle_Odbc - Fatal编程技术网

C# 如何使用ODBC在C中获取oracle SQL函数返回?

C# 如何使用ODBC在C中获取oracle SQL函数返回?,c#,sql,.net,oracle,odbc,C#,Sql,.net,Oracle,Odbc,下面是我要调用的SQL函数: 规格: 正文: 和我的C代码: OdbcDataReader DbReader; OdbcCommand Cmd = new OdbcCommand("{? = call SMI1002_33.PCK_GET_INFO.FNC_GET_ACTEURS()}", connOracle); Cmd.CommandType = CommandType.StoredProcedure; OdbcParamet

下面是我要调用的SQL函数:

规格:

正文:

和我的C代码:

        OdbcDataReader DbReader;
        OdbcCommand Cmd = new OdbcCommand("{? = call SMI1002_33.PCK_GET_INFO.FNC_GET_ACTEURS()}", connOracle);
        Cmd.CommandType = CommandType.StoredProcedure;

        OdbcParameter prm = Cmd.Parameters.Add("@RETURN_VALUE", OdbcType.Int);
        prm.Direction = ParameterDirection.ReturnValue;
        DbReader = Cmd.ExecuteReader();

但我有个错误。。。我知道我的函数的返回类型不是Int,但我找不到从我的C代码中获取数据的方法。

您不能将pl/sql集合返回到ODBC。你需要使用参考光标。嗨,老程序员!你知道我在哪里可以找到这样的例子吗?请不要偷懒。谷歌搜索并找到许多链接——我搜索了很多关于它的信息,我只找到了使用OracleConnection实现这一点的方法,但我正在尝试使用OdbcConnection实现这一点,而没有odbcType.cursor。用odbc是不可能做到这一点的吗?据我所知,您必须使用SQL select作为CommandText并调用ExecuteReader。。。从Oracle获取结果集。引用游标不能通过ODBC工作。在Oracle.ManagedDataAccess中工作得非常好!
create or replace 
PACKAGE BODY PCK_GET_INFO AS


  FUNCTION FNC_GET_ACTEURS RETURN tbl_acteur IS 
    tbl_acteur_inst tbl_acteur;

  BEGIN
    select * 
      bulk collect into tbl_acteur_inst
      from Acteur;

    RETURN tbl_acteur_inst;
 END FNC_GET_ACTEURS;

END PCK_GET_INFO;
        OdbcDataReader DbReader;
        OdbcCommand Cmd = new OdbcCommand("{? = call SMI1002_33.PCK_GET_INFO.FNC_GET_ACTEURS()}", connOracle);
        Cmd.CommandType = CommandType.StoredProcedure;

        OdbcParameter prm = Cmd.Parameters.Add("@RETURN_VALUE", OdbcType.Int);
        prm.Direction = ParameterDirection.ReturnValue;
        DbReader = Cmd.ExecuteReader();