【问题标题】:How to call a DB2 stored procedure from C#?如何从 C# 调用 DB2 存储过程?
【发布时间】:2011-03-08 00:51:37
【问题描述】:

我使用用于 Linux 的 DB2 9.7。存储过程是用PL/SQL(Oracle的编程语言)实现的,所以,记录集是一个输出参数(SYS_REFCURSOR)。

CREATE OR REPLACE PROCEDURE TEST_CURSOR (
  CV_1 OUT SYS_REFCURSOR
) IS
BEGIN
    OPEN CV_1 FOR
    SELECT 1 COLUMN
      FROM DUAL;
END TEST_CURSOR;

我不知道如何在我的 C# 代码中声明这个参数。

DB2Parameter parameter = ((DB2Command)command).CreateParameter();

parameter.ParameterName = "cv_1";
parameter.Direction = ParameterDirection.Output;
parameter.DbType = ...

【问题讨论】:

    标签: c# stored-procedures plsql db2 sys-refcursor


    【解决方案1】:

    没有用于结果集的 DB2Type 枚举。在他们的 API 中,您执行此操作的方式是使用 DB2Command.ExecuteReader 方法执行命令。您可能必须将 PL/SQL 更改为返回 sys_refcursor 的函数,而不是具有 sys_refcursor 参数的过程。

    【讨论】:

    • 我试过这个,但我不知道如何从 C# 调用函数。我遇到了这个错误:DB2: ERROR [42884] [IBM][DB2/LINUXX8664] SQL0440N 没有找到具有兼容参数的类型为“PROCEDURE”的名为“FUN_TEST”的授权例程。 SQLSTATE=42884
    • 一个函数返回一个值并用关键字'FUNCTION'而不是'PROCEDURE'声明。查看您手头的 PL/SQL 文档以获取更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    相关资源
    最近更新 更多