2016-12-05 67 views
0

我想在我的數據庫中的表中插入一個新行。我遇到了以下MODPLSQL_PROCEDURE_NAME字段的問題。PL SQL插入參數到字符串

DECLARE 
    lId VARCHAR2(20); 
BEGIN 
    lId := 'XLRP' || SEQ.NEXTVAL; 
END; 

INSERT INTO REPORTS(CATEGORY_ID, 
          DESCRIPTION, 
          ID, 
          MODPLSQL_PACKAGE_NAME, 
          MODPLSQL_PROCEDURE_NAME, 
          NOTES) 
      VALUES   ('XLRC0', 
          'Training Task XL Report', 
          'XLRP' || WORKFLOW_REPORTS_SEQ.NEXTVAL, 
          '!MODPLSQL_XL_REPORTS_PKG', 
          'XL_REPORT?pReportId=' || lId || '&' || 'pReportName=Training Task XL Report' || '&' || 'pPackageName=TRAINING_PKG' || '&' || 'pProcedureName=RUN_NOW', 
          NULL); 

我給場所需的輸出如下所示(實施例LID = XLRP100):

XL_REPORT?pReportId=XLRP100&pReportName=Training Task XL Report&pPackageName=TRAINING_PKG&pProcedureName=RUN_NOW 

在MODPLSQL_PROCEDURE_NAME我需要導入SEQ生成的ID蓋子從上面的陳述。任何人都可以告訴我正確的語法來做到這一點?

此外,我已經打破了我的字符串&的爲了避免彈出一個框要求我輸入參數,'set define off'不會改變這一點。有沒有更好的寫作方式?

回答

0

如果你想使用的lId值在INSERT聲明中,最簡單的方法是將其移動到你的PL/SQL塊,例如:其次

DECLARE 
    lId VARCHAR2(20); 
BEGIN 
    lId := 'XLRP' || SEQ.NEXTVAL; 

    INSERT INTO REPORTS(CATEGORY_ID, 
          DESCRIPTION, 
          ID, 
          MODPLSQL_PACKAGE_NAME, 
          MODPLSQL_PROCEDURE_NAME, 
          NOTES) 
      VALUES   ('XLRC0', 
          'Training Task XL Report', 
          lId, 
          '!MODPLSQL_XL_REPORTS_PKG', 
          'XL_REPORT?pReportId=' || lId || '&' || 'pReportName=Training Task XL Report' || '&' || 'pPackageName=TRAINING_PKG' || '&' || 'pProcedureName=RUN_NOW', 
          NULL); 

END; 

,如果你想避免任何&字符的問題,您可以使用CHR(38)來代替。

       'XL_REPORT?pReportId=' || lId || CHR(38) || 'pReportName=Training Task XL Report' || CHR(38) || 'pPackageName=TRAINING_PKG' || CHR(38) || 'pProcedureName=RUN_NOW',