我有一个数据库处理程序,该处理程序由调用该程序包的SQL-String调用。
数据库处理程序调用
private List<ProductionPending> GetPendingProductionDeployments()
{
List<ProductionPending> list = null;
sqlStr = "ADM_PORTAL_REP.p_PendingProductionDeployments;";
DataTable dt = dbhandler.ExecuteQuery(sqlStr, "2016-04");
return dt;
}
然后在数据库处理程序中,以下错误发生在以下行:adp.Fill(dt);
ORA-06550:第1行,第57列:PLS-00103:出现符号 “,”预期满足以下条件之一:
。 (* @%&=-+ / / at in是mod余数而不是rem <>或!=或〜=> = <= <>或like2 like4 在||之间喜欢指标多集成员子多集
数据库处理程序
public DataTable ExecuteQuery(string p_sqlStr, string p_releaseId)
{
using (OracleConnection conn = new OracleConnection(cnnStr))
{
using (OracleCommand objCommand = new OracleCommand(p_sqlStr, conn))
{
objCommand.CommandType = CommandType.StoredProcedure;
OracleParameter outRefCursor = objCommand.Parameters.Add("pc_recordset", OracleDbType.RefCursor);
outRefCursor.Direction = ParameterDirection.InputOutput;
OracleParameter releaseId = objCommand.Parameters.Add("ps_releaseid", OracleDbType.Varchar2);
releaseId.Value = p_releaseId;
DataTable dt = new DataTable();
OracleDataAdapter adp = new OracleDataAdapter(objCommand);
conn.Open();
adp.Fill(dt);
if (dt != null)
{
return dt;
}
}
}
return null;
}
现在,我猜该错误是由我作为参数发送的SQL(程序包调用:"ADM_PORTAL_REP.p_PendingProductionDeployments;"
)引起的,因为当我在SQL Developer中而不是在Visual Studio中调用程序包时,程序包将执行并运行好。该错误仅在Visual Studio中发生。
SQL程序包
PROCEDURE p_PendingProductionDeployments (pc_recordset IN OUT SYS_REFCURSOR, ps_releaseid VARCHAR2)
IS
BEGIN
OPEN pc_recordset FOR
SELECT NVL(NULL, 0) ID,
RELEASEID releaseId,
RFC RFCNumber,
DEVELOPER developerInitials,
FILENAME fileName,
VERSION fileVersion,
NVL(RFD, 0) RFDNumber,
NVL(DEPLOYDATE, '1-Jan-0001') desiredDeploymentDate,
NVL(NULL, '1-Jan-1900') deploymentDate,
NOTES,
DETAIL_NOTES detailNotes,
'N' approvedInd,
DATE_REQUESTED dateRequested
FROM ADM_PROD_DEPLOYMENTS_V
WHERE RELEASEID = ps_releaseid;
END p_PendingProductionDeployments;
答案 0 :(得分:0)
您必须在查询中省略分号。
sqlStr = "ADM_PORTAL_REP.p_PendingProductionDeployments";