C#中的SQL包调用

时间:2018-07-17 12:52:10

标签: c# sql oracle

我有一个数据库处理程序,该处理程序由调用该程序包的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; 

Screenshot: Error In Visual Studio

1 个答案:

答案 0 :(得分:0)

您必须在查询中省略分号。

sqlStr = "ADM_PORTAL_REP.p_PendingProductionDeployments";