[20220414]toad呼叫執行指令碼問題.txt
[20220414]toad呼叫執行指令碼問題.txt
--//早上測試執行使用toad執行如下:
1.環境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SYS@book> @ tpt/pd _optim_peek_user_binds
Show all parameters and session values from x$ksppi/x$ksppcv...
NUM N_HEX NAME VALUE DESCRIPTION
---- ----- ---------------------- ----- ----------------------------
2180 884 _optim_peek_user_binds TRUE enable peeking of user binds
2.測試:
--//toad 下execute as script
@ tpt/pd _optim_peek_user_binds
Show all parameters and session values from x$ksppi/x$ksppcv...
old: select
n.indx + 1 num
, to_char(n.indx + 1, 'XXXX') n_hex
, n.ksppinm pd_name
, c.ksppstvl pd_value
, n.ksppdesc pd_descr
from sys.x$ksppi n, sys.x$ksppcv c
where n.indx=c.indx
and (
lower(n.ksppinm) || ' ' || lower(n.ksppdesc) like lower('&1')
-- or lower(n.ksppdesc) like lower('&1')
)
new: select
n.indx + 1 num
, to_char(n.indx + 1, 'XXXX') n_hex
, n.ksppinm pd_name
, c.ksppstvl pd_value
, n.ksppdesc pd_descr
from sys.x$ksppi n, sys.x$ksppcv c
where n.indx=c.indx
and (
lower(n.ksppinm) || ' ' || lower(n.ksppdesc) like lower('"%_optim_peek_user_binds%"')
-- or lower(n.ksppdesc) like lower('"%_optim_peek_user_binds%"')
)
未選擇任何行。
--//很奇怪並沒有返回行。我開始以為是展開引數是裡面_引起的問題。在windows下sqlplus下執行:
SYS@78> @ tpt/pd _optim_peek_user_binds
Show all parameters and session values from x$ksppi/x$ksppcv...
NUM N_HEX NAME VALUE DESCRIPTION
---------- ----- ------------------------ ------- ----------------------------
2180 884 _optim_peek_user_binds TRUE enable peeking of user binds
--//為什麼toad在執行沒有返回行了。
select
n.indx + 1 num
, to_char(n.indx + 1, 'XXXX') n_hex
, n.ksppinm pd_name
, c.ksppstvl pd_value
, n.ksppdesc pd_descr
from sys.x$ksppi n, sys.x$ksppcv c
where n.indx=c.indx
and (
lower(n.ksppinm) || ' ' || lower(n.ksppdesc) like lower('"%_optim_peek_user_binds%"')
-- or lower(n.ksppdesc) like lower('"%_optim_peek_user_binds%"')
)
--//再次執行確實沒有返回行。仔細檢查發現問題在於lower('"%_optim_peek_user_binds%"') 裡面的雙引號。
SYS@book> select lower('"%_optim_peek_user_binds%"') c30 from dual;
C30
------------------------------
"%_optim_peek_user_binds%"
--//也就是toad的execute as script在展開引數是把裡面雙引號沒有剔除。如果執行如下:
select
n.indx + 1 num
, to_char(n.indx + 1, 'XXXX') n_hex
, n.ksppinm pd_name
, c.ksppstvl pd_value
, n.ksppdesc pd_descr
from sys.x$ksppi n, sys.x$ksppcv c
where n.indx=c.indx
and (
lower(n.ksppinm) || ' ' || lower(n.ksppdesc) like lower('%_optim_peek_user_binds%')
-- or lower(n.ksppdesc) like lower('"%_optim_peek_user_binds%"')
)
NUM N_HEX
---------- -----
PD_NAME
--------------------------------------------------------------------------------
PD_VALUE
--------------------------------------------------------------------------------
PD_DESCR
--------------------------------------------------------------------------------
2180 884
_optim_peek_user_binds
TRUE
enable peeking of user binds
已選擇 1 行。
--//也就是toad的execute as script 與sqlplus的指令碼描述執行有一點點不同。
3.為什麼出現雙引號,我帶入的引數並沒有雙引號,實際上檢視tpt的pd.sql指令碼很容易理解:
$ cat tpt/pd.sql
-- Copyright 2018 Tanel Poder. All rights reserved. More info at
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
@@pd2 "%&1%"
$ cat tpt/pd2.sql
-- Copyright 2018 Tanel Poder. All rights reserved. More info at
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
col pd_name head NAME for a56
col pd_value head VALUE for a30 WRAP
column pd_descr heading DESCRIPTION format a99 word_wrap
Prompt Show all parameters and session values from x$ksppi/x$ksppcv...
select
n.indx + 1 num
, to_char(n.indx + 1, 'XXXX') n_hex
, n.ksppinm pd_name
, c.ksppstvl pd_value
, n.ksppdesc pd_descr
from sys.x$ksppi n, sys.x$ksppcv c
where n.indx=c.indx
and (
lower(n.ksppinm) || ' ' || lower(n.ksppdesc) like lower('&1')
-- or lower(n.ksppdesc) like lower('&1')
);
--//pd.sql指令碼呼叫pd2.sql裡面自動加了雙引號。導致toad下這個問題出現。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2887196/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20220414]toad與繫結變數peek.txt變數
- [20210114]toad檢視真實執行計劃問題.txt
- [20221126]tpt pr.sql指令碼執行問題.txtSQL指令碼
- [20240313]toad gather_plan_statistics執行計劃相關問題.txt
- [20210205]toad檢視真實執行計劃問題3.txt
- [20181206]toad 12小問題.txt
- [20230130]toad看執行計劃注意.txt
- [20190510]快速建立執行指令碼.txt指令碼
- [20220324]toad與sql profile使用問題.txtSQL
- [20221010]使用toad管理索引改名問題.txt索引
- 執行 shell 指令碼 \r 問題解決指令碼
- [20231021]生成bbed的執行指令碼.txt指令碼
- [20211206]toad下job建立檢視問題.txt
- [20181120]toad看真實的執行計劃.txt
- [20181128]toad連線資料庫的問題.txt資料庫
- [20181006]12c使用toad連線問題.txt
- [20220517]toad使用gather_plan_statistics提示問題.txt
- [20230224]ssh date執行問題.txt
- 一個“指令碼執行夯死”問題的分析指令碼
- [20231023]生成bbed的執行指令碼(bash shell).txt指令碼
- Linux 作業系統指令碼格式問題導致指令碼無法執行Linux作業系統指令碼
- [20181128]toad連線資料庫的問題(補充).txt資料庫
- [20211229]toad下優化sql語句注意的問題.txt優化SQL
- [20210330]bash使用source or ..呼叫shell指令碼注意txt指令碼
- [20231101]使用tpt seg2.sql指令碼問題.txtSQL指令碼
- [20231102]除錯bash shell指令碼遇到的問題.txt除錯指令碼
- [20220102]使用ashtop與dashtop指令碼的小問題.txt指令碼
- [20210107]編寫bash shell指令碼遇到的問題.txt指令碼
- shell指令碼放到crontab裡就執行不成功的問題指令碼
- [20241110]使用xto10.sql指令碼遇到的問題.txtSQL指令碼
- 執行shell指令碼指令碼
- 程式碼注入之遠端呼叫執行緒的一些問題執行緒
- 執行python指令碼後臺執行Python指令碼
- [20181107]低版本toad連線18c資料庫問題.txt資料庫
- appium ios java 指令碼如何用指令執行,例如 adb 那種方式執行指令碼APPiOSJava指令碼
- [20220414]Function based indexes and cursor sharing2.txtFunctionIndex
- 在指令碼中呼叫git命令:指定git命令執行上下文指令碼Git
- Qt 子執行緒呼叫connect/QMetaObject::invokeMethod 不呼叫槽函式問題QT執行緒Object函式