oracle中的子字符串

oracle中的子字符串,oracle,stored-procedures,plsql,oracle11g,Oracle,Stored Procedures,Plsql,Oracle11g,我的问题如下 select dbms_metadata.get_ddl('TRIGGER', 'trigger_delete') from dual; CREATE OR REPLACE TRIGGER "owner"."trigger_delete" BEFORE DELETE ON roles FOR EACH ROW BEGIN DBMS_APPLICATION_INFO.read_client_info (acct_utils.trigger_enabled); IF acct_ut

我的问题如下

select dbms_metadata.get_ddl('TRIGGER', 'trigger_delete') from dual;
CREATE OR REPLACE  TRIGGER "owner"."trigger_delete" BEFORE DELETE ON roles FOR EACH ROW
BEGIN
DBMS_APPLICATION_INFO.read_client_info (acct_utils.trigger_enabled);
IF acct_utils.trigger_enabled <> 'F' THEN
  INSERT INTO delete_table (ID, key, object, type, keytype, objecttype, created, deleted, deletedby) VALUES(
    :old.id,
    :old.key,
    'delete',
    null,
    :old.keytype,
    null,
    :old.whencreated,
    (CURRENT_TIMESTAMP AT TIME ZONE 'GMT'),
    SYS_CONTEXT('TMCtx', 'USERKEY')
  );
END IF;
END trigger_delete;
ALTER TRIGGER "owner"."trigger_delete" ENABLE
查询输出如下

select dbms_metadata.get_ddl('TRIGGER', 'trigger_delete') from dual;
CREATE OR REPLACE  TRIGGER "owner"."trigger_delete" BEFORE DELETE ON roles FOR EACH ROW
BEGIN
DBMS_APPLICATION_INFO.read_client_info (acct_utils.trigger_enabled);
IF acct_utils.trigger_enabled <> 'F' THEN
  INSERT INTO delete_table (ID, key, object, type, keytype, objecttype, created, deleted, deletedby) VALUES(
    :old.id,
    :old.key,
    'delete',
    null,
    :old.keytype,
    null,
    :old.whencreated,
    (CURRENT_TIMESTAMP AT TIME ZONE 'GMT'),
    SYS_CONTEXT('TMCtx', 'USERKEY')
  );
END IF;
END trigger_delete;
ALTER TRIGGER "owner"."trigger_delete" ENABLE

帮帮我,我在哪里失踪了

大概是这样的吧;我的CTE是你的测试结果

with test (col) as 
(select q'[
CREATE OR REPLACE  TRIGGER "owner"."trigger_delete" BEFORE DELETE ON roles FOR EACH ROW
BEGIN
DBMS_APPLICATION_INFO.read_client_info (acct_utils.trigger_enabled);
IF acct_utils.trigger_enabled <> 'F' THEN
  INSERT INTO delete_table (ID, key, object, type, keytype, objecttype, created, deleted, deletedby) VALUES(
    :old.id,
    :old.key,
    'delete',
    null,
    :old.keytype,
    null,
    :old.whencreated,
    (CURRENT_TIMESTAMP AT TIME ZONE 'GMT'),
    SYS_CONTEXT('TMCtx', 'USERKEY')
  );
END IF;
END trigger_delete;]' 
from dual)
select substr(col, 
              instr(upper(col), 'INSERT INTO DELETE_TABLE'),
              --
              instr(col, ';', instr(upper(col), 'INSERT INTO DELETE_TABLE'), 1) -
              instr(upper(col), 'INSERT INTO DELETE_TABLE') + 1
             ) result
from test;