【发布时间】: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