如何通过删除单一和多行注释&来提取PLSQL代码。领先/落后空间,但不能删除Oracle提示?
实际上我想提取视图的DDL,然后将新列添加到视图中并动态重建观点。但是有些视图非常复杂(大小(,并有许多空格,单行评论,多行评论和提示。
select text
from All_views
where owner = 'Schema_name'
and view_name = 'View1';
我从原始考虑使用Oracle正则表达式,但也删除了提示。
有人可以指导我如何实现这一目标吗?
用户想保留此评论行,将新字段添加到视图中。由于对于他们而言,这对于审计目的来说是非常重要的。
我的视图语法:
Select /*+LEADING ACL VS TXN ACT TTY SEC SECID SHR_UDF*/
TXN_ID,
/**** IF YOU ADD COL CHECK OUT THE TEMP TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP1 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP2 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP3 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP4 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP5 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP6 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP7 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP8 TABLENAME****/
/****SELECT * FROM ALL_TAB_COLUMN****/
/**** wHERE COLUMN_NAME=COL2****/
/**** gROUP BY TABLE_NAME***/
/**** oRDER BY1****/
/* CHANGE JIRA1234 STARTS*/
ACL.aCCOUNT_NUMBER,
/* CHANGE JIRA1234 ENDS*/
TXN. TXN_SALE_dATE,
TXN.TXN_iNVOICE_DATE,
TXN. TXN_pUBLISH_DATE,
ACL.TXN_EXCH_DATE,
ACL.SALES_DATE,
ACL.pRICE_DATE,
--ACL.LAST_UPDATED,
TTY.TTY_TTY_TYPE_ID,
/* CHANGE JIRA7890 STARTS*/
TXN.ACL_OPEM_ENTRY_NO,
/* CHANGE JIRA7890 eNDS*/
FROM SCHEMA.aCCOUNT_MASTER ACL
JOIN SCHEMA.TXN_MASTER TXN
ON ACL.BRANCH_CD=TXN.BRANCH_CD
AND ACL.aCCOUNT_NO=TXN.aCCOUNT_NO
JOIN SCHEMA.TXN_TYPE_MASTER TTY
ON TXN.TTY_TYPE_ID=TTY.TTY_TYPE_ID
AND TTY.SCE_ID=TXN_SEC_ID';
预先感谢
您的问题并不是那么清楚,但是我会通过删除单一和多行评论/amp; teft/tabled空间来回答第一个位"如何提取PLSQL代码"不删除Oracle提示?"
我认为您在使用正则言语方面走上了正确的道路,以下将删除所有注释而不会删除提示。
select regexp_replace('Create Or Replace Force view Schema_name.View1 as
Select /*+LEADING ACL VS TXN ACT TTY SEC SECID SHR_UDF*/
TXN_ID,
/**** IF YOU ADD COL CHECK OUT THE TEMP TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP1 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP2 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP3 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP4 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP5 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP6 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP7 TABLE NAME****/
/**** IF YOU ADD COL CHECK OUT THE TEMP8 TABLENAME****/
/****SELECT * FROM ALL_TAB_COLUMN****/
/**** wHERE COLUMN_NAME=COL2****/
/**** gROUP BY TABLE_NAME***/
/**** oRDER BY1****/
/* CHANGE JIRA1234 STARTS*/
ACL.aCCOUNT_NUMBER,
/* CHANGE JIRA1234 ENDS*/
TXN. TXN_SALE_dATE,
TXN.TXN_iNVOICE_DATE,
TXN. TXN_pUBLISH_DATE,
ACL.TXN_EXCH_DATE,
ACL.SALES_DATE,
ACL.pRICE_DATE,
--ACL.LAST_UPDATED,
TTY.TTY_TTY_TYPE_ID,
/* CHANGE JIRA7890 STARTS*/
TXN.ACL_OPEM_ENTRY_NO,
/* CHANGE JIRA7890 eNDS*/
FROM SCHEMA.aCCOUNT_MASTER ACL
JOIN SCHEMA.TXN_MASTER TXN
ON ACL.BRANCH_CD=TXN.BRANCH_CD
AND ACL.aCCOUNT_NO=TXN.aCCOUNT_NO
JOIN SCHEMA.TXN_TYPE_MASTER TTY
ON TXN.TTY_TYPE_ID=TTY.TTY_TYPE_ID
AND TTY.SCE_ID=TXN_SEC_ID', '/**.+**/s+|/*s.+*/s+|--.+s+', '', 1, 0) from dual;
输出是
Create Or Replace Force view Schema_name.View1
as
Select /*+LEADING ACL VS TXN ACT TTY SEC SECID SHR_UDF*/ TXN_ID,
ACL.aCCOUNT_NUMBER,
TXN. TXN_SALE_dATE,
TXN.TXN_iNVOICE_DATE,
TXN. TXN_pUBLISH_DATE,
ACL.TXN_EXCH_DATE,
ACL.SALES_DATE,
ACL.pRICE_DATE,
TTY.TTY_TTY_TYPE_ID,
TXN.ACL_OPEM_ENTRY_NO,
FROM SCHEMA.aCCOUNT_MASTER ACL
JOIN SCHEMA.TXN_MASTER TXN
ON ACL.BRANCH_CD=TXN.BRANCH_CD
AND ACL.aCCOUNT_NO=TXN.aCCOUNT_NO
JOIN SCHEMA.TXN_TYPE_MASTER TTY
ON TXN.TTY_TYPE_ID=TTY.TTY_TYPE_ID
AND TTY.SCE_ID=TXN_SEC_ID