[20221202]sqlplus set trimout 问题.txt --//自己对这个不是很了解,做一个测试,上网查询到的设置是: --//set trimout on; -- 去除标准输出每行的行尾空格(缺省为off) --//通过测试说明问题: 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 --//我登录设置如下: SCOTT@book> show trimout trimout ON 2.建立测试例子: $ cat -Ev /tmp/aa.txt select $ sysdate from dual ;$ --//注意结尾的空格. SCOTT@book> @ /tmp/aa.txt SYSDATE ------------------- 2022-12-02 09:07:06 --//手工执行5次以上,不要退出. SCOTT@book> @ hash HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID ---------- ------------- ------------ ---------- --------------- ---------- ------------------- ----------- 3737888546 bz7x703gcr9t2 0 108322 1388734953 decba722 2022-12-02 09:07:05 16777222 3.分析: $ rlsql -s -l scott/book <<< "column sql_fulltext format a40 ^Jset trimout on^Jselect sql_fulltext from v\$sqlarea where sql_id='bz7x703gcr9t2';"| cat -Ev SQL_FULLTEXT$ ----------------------------------------$ select$ sysdate from dual$ $ $ --//^J 在linux下通过ctrl+v ctrl+j输入. --//注意一个字节select后面的空格没有输出,后来再说明问题. $ rlsql -s -l scott/book <<< "column sql_fulltext format a40 ^Jset trimout off^Jselect sql_fulltext from v\$sqlarea where sql_id='bz7x703gcr9t2';"| cat -Ev SQL_FULLTEXT $ ---------------------------------------- $ select $ sysdate from dual $ $ $ --//最后的$出现第271列,..太长我移动到放在44列上.为什么出现在271列.我改变窗口大小尝试视乎$也是出现在271列上. $ rlsql -s -l scott/book <<< "show all;"| grep 27 linesize 270 --//可以肯定出现空格最后的位置与linesize=270设置相关. $ rlsql -s -l scott/book <<< "set linesize 50 ;column sql_fulltext format a40 ^Jset trimout off^Jselect sql_fulltext from v\$sqlarea where sql_id='bz7x703gcr9t2';"| cat -Ev SP2-0158: unknown SET option ";column"$ SQL_FULLTEXT $ --------------------------------------------------$ select $ sysdate from dual $ $ $ --//出现在51列也可以确定与linesize设置相关.这样问题就可以确定了. --//set trimout on 去除标准输出每行的行尾空格,但是如果字串结尾有空格呢. SCOTT@book> select dump(to_char(sql_fulltext),16) c50 , sql_fulltext c40 ,length(sql_fulltext) n10 from v$sqlarea where sql_id='bz7x703gcr9t2'; C50 C40 N10 -------------------------------------------------- ---------------------------------------- --------------------- Typ=1 Len=31: 20,20,20,20,20,20,73,65,6c,65,63,74, select 31 a,73,79,73,64,61,74,65,20,66,72,6f,6d,20,64,75,61, sysdate from dual 6c,20 --//你可以发现sqlplus在执行语句时,sqlplus做了"处理"删除了每行结尾空格.而最后一行分号前的空格保留,也就是仅仅去除分号. SCOTT@book> host wc /tmp/aa.txt 2 5 39 /tmp/aa.txt --//这个也是我最近测试遇到的问题,w3wp.exe 的程序,对结尾的空格不做这样的处理,并且里面chr(13)字符(\r) 也不删除,这样导致我 --//在sqlplus执行的语句的sql_id与文w3wp.exe执行的sql_id不一致. --//实际上每种工具可能处理的方式不一样,比如toad. select Sysdate from dual; select Sysdate from dual ; select Sysdate from dual ; select Sysdate from dual; select Sysdate from dual ; select Sysdate from dual ; --//这些sql语句执行的sql_id都是一样的;toad下删除分号前的全部空格,而slect前面的空格也全部删除. SCOTT@book> select executions,sql_id,sql_text c80 from v$sql where sql_id='3nwy6z05jvcaa'; EXECUTIONS SQL_ID C80 ---------- ------------- -------------------------------------------------------------------------------- 6 3nwy6z05jvcaa select Sysdate from dual --//执行了6次.也就是每种工具在处理语句前都可能做了一些"格式化"的处理工作. --//早期toad版本(9.6版本)是在结尾的分号前加入一个空格.参考链接: --//[20120327]toad与sqlplus下执行sql语句的一个细节.txt=>http://blog.itpub.net/267265/viewspace-719592/ --//[20150803]toad 12版本1个小变化.txt =>http://blog.itpub.net/267265/viewspace-1760071/
[20221202]sqlplus set trimout 问题.txt
来源:这里教程网
时间:2026-03-03 18:11:58
作者:
编辑推荐:
- [20221202]sqlplus set trimout 问题.txt03-03
- 使用RPM安装ORACLE-21c数据库03-03
- Oracle DB replay测试(二)03-03
- Oracle DB replay测试(一)03-03
- 绑定变量窥视测试案例03-03
- Oracle Replay测试(全)03-03
- 记一次remote_listener引发的错误03-03
- 一个典型的存储I/O异常引起的故障03-03
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 使用RPM安装ORACLE-21c数据库
使用RPM安装ORACLE-21c数据库
26-03-03 - 记一次remote_listener引发的错误
记一次remote_listener引发的错误
26-03-03 - 一个典型的存储I/O异常引起的故障
一个典型的存储I/O异常引起的故障
26-03-03 - 层级查找并将层级拆分成多列
层级查找并将层级拆分成多列
26-03-03 - 国际物流报关中EDI和电子单有什么区别?
国际物流报关中EDI和电子单有什么区别?
26-03-03 - oracle adg备库归档满了无法同步
oracle adg备库归档满了无法同步
26-03-03 - plsqldevelper工具处理生僻字
plsqldevelper工具处理生僻字
26-03-03 - SQL语言基础(高级查询)
SQL语言基础(高级查询)
26-03-03 - SQL语言基础(多表连接)
SQL语言基础(多表连接)
26-03-03 - SQL语言基础(子查询)
SQL语言基础(子查询)
26-03-03
