我正在尝试在我的数据库中的表中插入一个新行。我在下面的MODPLSQL_PROCEDURE_NAME字段中遇到了问题。
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 lId。任何人都可以告诉我正确的语法吗?
此外,为了避免弹出一个请求我输入参数的框,我已经打破了我的字符串&&#;;设置定义关闭'不会改变这一点。有没有更好的写作方式?
答案 0 :(得分: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',