C# 如何使用ODBC在C中获取oracle SQL函数返回?
下面是我要调用的SQL函数: 规格: 正文: 和我的C代码: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
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();