【发布时间】:2021-04-20 13:04:18
【问题描述】:
我有一个每次运行的查询,选择与表相关的 user_triggers 行(p_table_name_in)。我想每天运行这个过程,我只想插入新行,而不是再次插入所有行。但是当我安装这个 oackage 时,我得到了这个错误:
ORA-00932 (130: 21):PL / SQL:ORA-00932:不一致的数据类型: 预期 CLOB,收到 LONG(第 31 行)
当我尝试将 TRIGGER_BODY AS BODY_TRIGGER 更改为 TO_LOB(TRIGGER_BODY) AS BODY_TRIGGER 时,我收到此错误:
ORA-00932 (111: 29):PL / SQL:ORA-00932:不一致的数据类型:- 预期,收到 LONG(第 12 行)
程序:
PROCEDURE save_trigger_definitions ( p_table_name_in in VARCHAR2 ) IS
BEGIN
MERGE INTO hot_utils_reload_triggers t1
USING
(
SELECT TRIGGER_NAME ,
TABLE_NAME ,
STATUS ,
DESCRIPTION,
TRIGGER_BODY AS BODY_TRIGGER,
WHEN_CLAUSE
FROM user_triggers
)t2
ON(t2.TABLE_NAME like upper(p_table_name_in))
WHEN MATCHED THEN UPDATE SET
t1.DESCRIPTION = t2.DESCRIPTION,
t1.WHEN_CLAUSE = t2.WHEN_CLAUSE
WHEN NOT MATCHED THEN
INSERT (TRIGGER_NAME,
TABLE_NAME,
STATUS,
DESCRIPTION,
BODY_TRIGGER,
WHEN_CLAUSE)
VALUES (t2.TRIGGER_NAME,
t2.TABLE_NAME,
t2.STATUS,
t2.DESCRIPTION,
t2.BODY_TRIGGER,
t2.WHEN_CLAUSE);
commit;
END save_trigger_definitions;
【问题讨论】:
标签: oracle sql-insert clob sql-merge lob