使用 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");
不确定参数之间是否需要括号
我们使用 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");
不确定参数之间是否需要括号