[20230501]為什麼沒有顯示輸出.txt

lfree發表於2023-05-04

[20230501]為什麼沒有顯示輸出.txt

--//前幾天在使用tpt usid.sql指令碼查詢時遇到的問題.

1.環境:
SYS@192.168.31.8:1521/hrp430> @ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.3.0     Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

2.問題:
SYS@192.168.31.8:1521/hrp430> @ usid 1255
USERNAME SID            AUDSID OSUSER MACHINE  PROGRAM SPID  OPID CPID  SQL_ID  HASH_VALUE LASTCALL STATUS SADDR            PADDR            TADDR LOGON_TIME
-------- -------------- ------ ------ -------- ------- ----- ---- ----- ------ ----------- -------- ------ ---------------- ---------------- ----- -------------------
          '1255,14883'       0 oracle xhserver (ARC1)  13995   43 13995                  0   608226 ACTIVE 00000000BCD0A680 00000000BD7BD160       2023-04-20 10:54:05
--//LOGON_TIME=2023-04-20 10:54:05,當時超長顯示.我使用pr.sql縱向輸出.

SYS@192.168.31.8:1521/hrp430> @ pr
PL/SQL procedure successfully completed.

--//嗯,沒有輸出。突然想起以前遇到類似問題: 連結 [20211126]完善tpt pr.sql指令碼.txt.
--//執行如下ok:
SYS@192.168.31.8:1521/hrp430> @ pr 1255
--//結果略.

3.分析:
--//不過我當時想我前面已經執行@ usid 1255,相當於已經定義了引數1=1255,我並沒有清除引數1的定義,呼叫pr時應該自動使用我前面
--//的賦值.當時事情太多,這個問題暫時放一下.如果當時執行define 1 也許問題就很容易定位.

--//五一放假,仔細檢視usid.sql的原始碼發現實際上在執行完成時tpt的指令碼修改引數1,2的定義.
def 1=&usid_sql_hash_value
def 2=%

--//對於我的例子相當於將引數1定義為0.執行 @pr 相當於執行 @pr 0,而沒有sid=0的資訊,沒有輸出就正常了.
--//作者這樣寫的主要目的是方便其他指令碼呼叫時不用再輸入引數.比如sqlh.sql指令碼.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2949731/,如需轉載,請註明出處,否則將追究法律責任。

相關文章