c# - 从 C# 使用 Odbc 调用 Oracle 包函数

标签 c# oracle odbc

我在 Oracle 包中定义了一个函数:

CREATE OR REPLACE PACKAGE BODY TESTUSER.TESTPKG as
  FUNCTION testfunc(n IN NUMBER) RETURN NUMBER as
  begin
    return n + 1;
  end testfunc;
end testpkg;
/

如何使用 Odbc 从 C# 调用它?我尝试了以下方法:

using System;
using System.Data;
using System.Data.Odbc;

class Program {
    static void Main(string[] args) {
        using (OdbcConnection connection = new OdbcConnection("DSN=testdb;UID=testuser;PWD=testpwd")) {
            connection.Open();

            OdbcCommand command = new OdbcCommand("TESTUSER.TESTPKG.testfunc", connection);
            command.CommandType = System.Data.CommandType.StoredProcedure;

            command.Parameters.Add("ret", OdbcType.Int).Direction = ParameterDirection.ReturnValue;

            command.Parameters.Add("n", OdbcType.Int).Direction = ParameterDirection.Input;
            command.Parameters["n"].Value = 42;

            command.ExecuteNonQuery();
            Console.WriteLine(command.Parameters["ret"].Value);
        }
    }
}

但是我得到一个异常提示“无效的 SQL 语句”。
我做错了什么?

最佳答案

在过去,我会使用类似于以下的命令字符串:

“{?= CALL JF_TESTUSER.TESTPKG.testFunc(?)}”

请参阅以下内容 article了解更多信息

关于c# - 从 C# 使用 Odbc 调用 Oracle 包函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2949641/

相关文章:

c# - 在不同 UI 线程上创建的 WPF Access 窗口

c# - 如何确定本地时间是否针对夏令时进行了调整?

java - 提交期间的延迟(使用 JPA/JTA)

.net - 什么时候应该使用 Odbc、OleDb、SQLClient?有什么权衡取舍

sql - Access ODBC : JOIN between tables in different database files

c# - 如何使用 C# 在 ASP.NET 中显示带有图标的消息框

c# - 如何打印表格的特定区域?

java - ResultSet.getNext() 不适用于PreparedStatement

oracle - 如何将 Google Maps mysql 查询转换为 oracle,是否会影响性能?

postgresql - 在 Windows 上设置 PostgreSQL ODBC