我正在尝试使用Dapper执行Oracle软件包的功能,但是却收到ORA-06550错误消息:
ORA-06550: line 1, column 7:PLS-00221: 'MYFUNC' is not a procedure or is undefinedORA-06550: line 1, column 7:PL/SQL: Statement ignored
我能够在Oracle的SQL Developer中成功执行该功能:
DECLARE
PARAM1 NUMBER;
PARAM2 NUMBER;
v_Return VARCHAR2(200);
BEGIN
PARAM1 := 1;
PARAM2 := 2;
v_Return := MYPACKAGE.MYFUNC(
PARAM1 => PARAM1,
PARAM2 => PARAM2
);
/* Legacy output:
DBMS_OUTPUT.PUT_LINE('v_Return = ' || v_Return);
*/
:v_Return := v_Return;
--rollback;
END;
但是当尝试使用dapper做同样的事情时:
var storedProc = @"MYPACKAGE.MYFUNC";
return _connection.Query<string>(storedProc, new { PARAM1 = 1, PARAM2 = 2 }, commandType: CommandType.StoredProcedure).SingleOrDefault();
我收到上面的错误消息。有什么想法吗?
答案 0 :(得分:0)
我有相同的错误消息,并且在安装了Oracle的 Oracle.ManagedDataAccess 软件包后消失了。
我尚不清楚您的功能做什么。它是递归的吗? 无论如何,当使用完参数时,您应该阅读以下文章: call-oracle-store-procedure-with-dapper。 该类基于OracleDynamicParameters类。
我也发现这很有趣,但是我还没有尝试过:Nuget软件包Dapper.Oracle。