首页 > 数据库 > Oracle > [20230501]为什么没有显示输出.txt
[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博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2949731/ ,如需转载,请注明出处,否则将追究法律责任。