使用 PetaPoco 执行 oracle 程序

Execure oracle procedure using PetaPoco

我们使用 Oracle 数据库。我们需要执行下面的存储过程,直接在DB上执行的时候已经生效了

exec DWHCR.LANCEKING_PA.FORWARD_WF_PR(12345, 'WF_T02', 'Test123'); 

我们尝试了 PetaPoc 中的以下方法来执行该过程:

            _dataBase.ExecuteNonQueryProc("DWHCR.LANCEKING_PA.FORWARD_WF_PR", new
            {
                P_ID_WF = 12345,
                P_RECEIVER = "WF_T02",
                P_COMMENT = "Test123"
            });

很遗憾,我们遇到了错误

Oracle.ManagedDataAccess.Client.OracleException
ORA-01008: Nicht allen Variablen ist ein Wert zugeordnet
   at OracleInternal.ServiceObjects.OracleConnectionImpl.VerifyExecution(Int32& cursorId, Boolean bThrowArrayBindRelatedErrors, SqlStatementType sqlStatementType, Int32 arrayBindCount, OracleException& exceptionForArrayBindDML, Boolean& hasMoreRowsInDB, Boolean bFirstIterationDone)

有人可以帮助我们吗?

我们需要在语句之间放置“开始”和“结束”,如下所示:

 _dataBase.Execute("begin DWHCR.LANCEKING_PA.FORWARD_WF_PR (1234, 'WF_T02', 'Test123'); end;");

您需要传递的参数:

_dataBase.ExecuteNonQueryProc(";DWHCR.LANCEKING_PA.FORWARD_WF_PR( @P_ID_WF, @P_RECEIVER, @P_COMMENT)", 
new {
            P_ID_WF = 12345,
            P_RECEIVER = "WF_T02",
            P_COMMENT = "Test123"
        });

_dataBase.ExecuteNonQueryProc(";DWHCR.LANCEKING_PA.FORWARD_WF_PR( @0, @1, @2)", 12345,"WF_T02", "Test123");

不确定参数之间是否需要括号