如何快速找到沒有使用繫結變數的SQL - asktome
Tom 的如何快速找到沒有使用繫結變數的SQL:
create table t1 as select sql_text from v$sqlarea;
alter table t1 add sql_text_wo_constants varchar2(1000);
create or replace function
remove_constants( p_query in varchar2 ) return varchar2
as
l_query long;
l_char varchar2(1);
l_in_quotes boolean default FALSE;
begin
for i in 1 .. length( p_query )
loop
l_char := substr(p_query,i,1);
if ( l_char = '''' and l_in_quotes )
then
l_in_quotes := FALSE;
elsif ( l_char = '''' and NOT l_in_quotes )
then
l_in_quotes := TRUE;
l_query := l_query || '''#';
end if;
if ( NOT l_in_quotes ) then
l_query := l_query || l_char;
end if;
end loop;
l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
for i in 0 .. 8 loop
l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
end loop;
return upper(l_query);
end;
/
update t1 set sql_text_wo_constants = remove_constants(sql_text);
select sql_text_wo_constants, count(*)
from t1
group by sql_text_wo_constants
having count(*) > 100
order by 2
/
create table t1 as select sql_text from v$sqlarea;
alter table t1 add sql_text_wo_constants varchar2(1000);
create or replace function
remove_constants( p_query in varchar2 ) return varchar2
as
l_query long;
l_char varchar2(1);
l_in_quotes boolean default FALSE;
begin
for i in 1 .. length( p_query )
loop
l_char := substr(p_query,i,1);
if ( l_char = '''' and l_in_quotes )
then
l_in_quotes := FALSE;
elsif ( l_char = '''' and NOT l_in_quotes )
then
l_in_quotes := TRUE;
l_query := l_query || '''#';
end if;
if ( NOT l_in_quotes ) then
l_query := l_query || l_char;
end if;
end loop;
l_query := translate( l_query, '0123456789', '@@@@@@@@@@' );
for i in 0 .. 8 loop
l_query := replace( l_query, lpad('@',10-i,'@'), '@' );
l_query := replace( l_query, lpad(' ',10-i,' '), ' ' );
end loop;
return upper(l_query);
end;
/
update t1 set sql_text_wo_constants = remove_constants(sql_text);
select sql_text_wo_constants, count(*)
from t1
group by sql_text_wo_constants
having count(*) > 100
order by 2
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-759836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle中如何查詢未使用繫結變數的SQL語句?Oracle變數SQL
- V$sql查詢未使用繫結變數的語句SQL變數
- 如何在對in操作使用變數繫結(轉)變數
- 在繫結變數下使用outline變數
- 如何用FGA得到繫結變數的值變數
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- Oracle資料傾斜導致的問題-有繫結變數Oracle變數
- MySQL高階特性——繫結變數MySql變數
- [20180930]in list與繫結變數.txt變數
- [20180912]PLSLQ與繫結變數.txt變數
- Vue select 繫結動態變數Vue變數
- [20180930]in list與繫結變數個數.txt變數
- [20210120]in list與繫結變數個數.txt變數
- React跟Vue不同 沒有雙向繫結ReactVue
- 【ORACLE】Oracle繫結變數知識梳理Oracle變數
- 繫結變數窺視測試案例變數
- Grails中如何繫結引數AI
- [20191213]共享池繫結變數的值在哪裡.txt變數
- [20221103]繫結變數的分配長度11.txt變數
- [20221030]繫結變數的分配長度10.txt變數
- [20200326]繫結變數抓取與NULL值.txt變數Null
- [20220414]toad與繫結變數peek.txt變數
- DBever SQL編輯器的高階應用:如何用變數快速查詢SQL變數
- APP如何做到快速流量變現?我想我找到了答案APP
- 10個SQL技巧之四:找到連續的沒有間隙的最大系列的日期SQL
- [20231210]執行計劃與繫結變數.txt變數
- [20190506]檢視巢狀與繫結變數.txt巢狀變數
- 如何在路由繫結中使用 IParsable路由
- Oracle面對“資料傾斜列使用繫結變數”場景的解決方案Oracle變數
- [20191216]共享池繫結變數的值在哪裡2.txt變數
- [20211227]抽取跟蹤檔案中的繫結變數值.txt變數
- sql 使用變數帶入in條件SQL變數
- Oracle資料傾斜導致的問題-無繫結變數Oracle變數
- 越來越發現自己不懂的還是不少--繫結變數變數
- 沒有學不會的C++:為什麼不要使用全域性變數C++變數
- 新手如何靠寫作變現?有什麼快速變現的技巧?
- vue3中ref繫結自定義元件沒有獲取到domVue元件
- 前端的批量介面如何快速響應?有沒有通用解決方案?前端
- 阿里雲如何繫結域名(阿里雲域名如何繫結ip)阿里