C#中使用Odbc调用Oracle包函数我在Oracle包中定义了一个函数:CREATEORREPLACEPACKAGEBODYTESTUSER.TESTPKGasFUNCTIONtestfunc(nINNUMBER)RETURNNUMBERasbeginreturnn+1;结束测试功能;结束测试包;/如何使用Odbc从C#中调用它?我尝试了以下方法:使用系统;使用系统数据;使用System.Data.Odbc;类程序{staticvoidMain(string[]args){使用(OdbcConnectionconnection=newOdbcConnection("DSN=testdb;UID=testuser;PWD=testpwd")){connection.Open();OdbcCommandcommand=newOdbcCommand("TESTUSER.TESTPKG.testfunc",connection);命令.CommandType=System.Data.CommandType.StoredProcedure;command.Parameters.Add("ret",OdbcType.Int).Direction=ParameterDirection.ReturnValue;command.Parameters.Add("n",OdbcType.Int).Direction=ParameterDirection.Input;命令.Parameters["n"].Value=42;命令。执行非查询();Console.WriteLine(command.Parameters["ret"].Value);但是我得到一个异常,说“无效的SQL语句”。我究竟做错了什么?过去,我会使用如下命令字符串:“{?=CALLJF_TESTUSER.TESTPKG.testFunc(?)}”有关更多信息,请参阅以下文章尝试OdbcCommandcommand=newOdbcCommand("begin?:=TESTUSER.TESTPKG.testfunc(?)结束;”,连接);我设法像这样调用包函数:command.CommandText=@"begin:ret:=ILMTEST.testpkg.testfunc(:n);end;";command.CommandType=System.Data.CommandType.Text;我认为您应该考虑使用OracleClient。如果您选择ODBC只是为了创建DSN,然后以某种与数据库无关的方式连接到它,请考虑使用EnterpriseLibraryDataAccessApplicationBlock。以上就是C#学习教程:在C#中使用Odbc调用Oracle封装函数全部内容分享给大家。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
