【问题标题】:PLS-00103: Encountered the symbol "end-of-file"PLS-00103:遇到符号“文件结尾”
【发布时间】:2016-02-12 10:50:31
【问题描述】:

我正在创建一个包,然后我会提示在表上创建一个触发器,该触发器将检查旧值和新值:

set serveroutput on
set LIN 200
set feedback off
set verify off
set embedded on
set heading off
spool tmp.sql

prompt create or replace trigger aud_&1
prompt after update on &1
prompt for each row
prompt begin

select '    audit_pkg.check_val( ''&1'', ''' || column_name ||          ''', ' || ':new.' || column_name || ', :old.' ||             column_name || ');'
from user_tab_columns where table_name = upper('&1') 
/
prompt end;
prompt /

spool off
set feedback on
set embedded off
set heading on
set verify on

@tmp
-------------

但是当我运行脚本时,它总是编译错误:

这意味着它在结束后错过了;

所以我的问题是我需要在脚本中添加什么以包含所需的;,当然我自己也尝试了一些东西,例如在第 95 行添加;;,但没有任何效果。

【问题讨论】:

  • 你需要添加吗?在line 93 ?
  • 感谢您的回复,我试过了,但这并没有解决问题。
  • 您需要在第 94 行删除 / bcz sqlplus 在找到 simbol 时运行您的语句并在第 93 行添加 ;... 然后 line 92 - 最后的 ;查询不正确...最后..您可以将查询作为文本...检查语法很容易
  • 检查您的脚本是否存在不平衡 () BEGIN-END IF-THEN-ELSIF-END LOOP-END LOOP 等。
  • 是-我做了你提到的从第 94 行删除 / 并添加的事情;在 93 结束时,但删除 ;从查询末尾开始导致其他错误,所以我把它留在了那里但是这仍然没有解决问题。我现在已将脚本添加为文本。

标签: sql oracle oracle11g triggers sqlplus


【解决方案1】:

类似于在脚本中生成 plsql 调用。 而不是

prompt end;

select 'end;' from dual
/

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2018-01-23
    • 2016-11-05
    相关资源
    最近更新 更多