在Oracle中搜索包含特定变量名称的触发器名称

时间:2011-11-17 03:46:07

标签: sql oracle plsql oracle10g

我正在尝试找到使用trig_tab变量的触发器名称。我在没有dbms_lob函数的情况下尝试了以下查询,它给了我

  

ORA-00997:非法使用LONG数据类型

错误。

所以我尝试使用dbms_lob.instr函数,但仍然给出了同样的错误。

Trigger_body字段是一种长数据类型。使用oracle 10g数据库。我该如何使它发挥作用。

SELECT *
FROM   dba_triggers a
WHERE  owner = 'BOR'
       AND table_name = 'MAP_VIEW'
       AND dbms_lob.Instr(a.trigger_body, 'mv_pkg.trig_tab') > 0
ORDER  BY status,
          trigger_name; 

1 个答案:

答案 0 :(得分:3)

考虑查询dba_source / user_source以搜索源中令牌的出现次数

SELECT name,
       line
FROM   dba_source
WHERE  owner = 'BOR'
       AND TYPE = 'TRIGGER'
       AND Lower(TEXT) LIKE '%trig_tab%'
ORDER  BY name; 

SELECT name,
       line
FROM   user_source
WHERE  TYPE = 'TRIGGER'
       AND Lower(TEXT) LIKE '%trig_tab%'
ORDER  BY name;