You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 19c换行调用存储过程触发ORA-06550错误原因咨询

问题:Toad(Oracle 19c)中换行调用存储过程触发ORA-06550错误的原因

存储过程代码

CREATE OR REPLACE PROCEDURE ITMS.SP_ADD_FOREIGN_KEY_CONSTRAINT_AUTO (
    P_TABLE_NAME    VARCHAR2,
    P_COLUMN_NAME   VARCHAR2)
IS
BEGIN
    EXECUTE IMMEDIATE   'ALTER TABLE '
                     || P_TABLE_NAME
                     || ' ADD CONSTRAINT '
                     || P_TABLE_NAME
                     || '_'
                     || SUBSTR(P_COLUMN_NAME,1, INSTR(P_COLUMN_NAME,'_ID')-1)
                     || '_FK FOREIGN KEY ('
                     || P_COLUMN_NAME
                     || ') REFERENCES '
                     || SUBSTR(P_COLUMN_NAME,1, INSTR(P_COLUMN_NAME,'_ID')-1)
                     || '(ID)';
END;

正常调用语句(执行成功)

EXEC SP_ADD_FOREIGN_KEY_CONSTRAINT_AUTO('DTMS_BA_VOLUME_DISCOUNT_DETAILS','REF_BUSINESS_ASSOCIATE_ID')

报错的调用语句

EXEC SP_ADD_FOREIGN_KEY_CONSTRAINT_AUTO('DTMS_BA_VOLUME_DISCOUNT_DETAILS',
   'REF_BUSINESS_ASSOCIATE_ID') `  

触发的错误信息

ORA-06550: line 1, column 76:  
PLS-00103: Encountered the symbol ";" when expecting one of the following:  

错误原因

  • 报错的调用语句末尾多了一个反引号(`),这是Oracle SQL语法中不允许的非法字符,会干扰解析器对语句的正常识别。
  • Oracle解析器会将这个反引号视为语句的一部分,错误判断语句的结束位置,进而抛出语法错误提示。去掉该多余的反引号后,换行调用的语句即可正常执行。

修正后的调用语句

EXEC SP_ADD_FOREIGN_KEY_CONSTRAINT_AUTO('DTMS_BA_VOLUME_DISCOUNT_DETAILS',
   'REF_BUSINESS_ASSOCIATE_ID')

内容的提问来源于stack exchange,提问作者Garvit Vashisth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 02:45:56