zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

Oracle的学习心得和知识总结(二)|Oracle数据库之sqlplus格式化输出

Oracle数据库输出 总结 知识 格式化 学习心得 sqlplus
2023-09-14 09:15:35 时间

Oracle数据库 sqlplus格式化输出



文章快速说明索引

学习目标:

目的:在sqlplus执行一条sql语句的时候,经常碰到显示结果,跨行输出,致使可读性很差(看着就特别别扭)


学习内容:(详见目录)

1、通过set linesizecolumn命令进行调整


学习时间:

2020年12月05日 18:21:36


学习产出:

1、Oracle数据库 sqlplus格式化输出
2、CSDN 技术博客 1篇


实际步骤设置参数

第0步:复现问题

SQL> SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
LOCALTIMESTAMP
---------------------------------------------------------------------------
05-DEC-20 06.16.20.787044 PM +08:00
05-DEC-20 06.16.20.787044 PM


SQL>

第1步:显示并设置行长

SQL> show linesize
linesize 120
SQL> set linesize 300
SQL> SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP							    LOCALTIMESTAMP
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
05-DEC-20 06.27.25.163873 PM +08:00					    05-DEC-20 06.27.25.163873 PM

SQL>

第2步:缩短列长度

SQL> column CURRENT_TIMESTAMP  format a50
SQL> column LOCALTIMESTAMP format a40
SQL> SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP				   LOCALTIMESTAMP
-------------------------------------------------- ----------------------------------------
05-DEC-20 06.30.16.795981 PM +08:00		   05-DEC-20 06.30.16.795981 PM

SQL>

第3步:永久生效 缩短列长度

注:在第二步中 虽然列的展示出现在了一行,但是当我们重新建立连接 就会发现如下情形:

SQL> conn /as sysdba
Connected.
SQL> SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP
---------------------------------------------------------------------------
LOCALTIMESTAMP
---------------------------------------------------------------------------
06-DEC-20 09.31.15.283894 AM +08:00
06-DEC-20 09.31.15.283894 AM


SQL>

那我们该怎么做才可以永久生效呢?
(这只是提供一种方法,小伙伴们自行将自己常用的字段的长度格式 添加到这个文件里面)

 vim $ORACLE_HOME/sqlplus/admin/glogin.sql

我们将上面的两个控制列长度的column命令添加到文件里面,重启 下面就是永久的效果:

SQL> conn /as sysdba
Connected.
SQL> SELECT CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

CURRENT_TIMESTAMP				   LOCALTIMESTAMP
-------------------------------------------------- ----------------------------------------
06-DEC-20 09.47.11.599160 AM +08:00		   06-DEC-20 09.47.11.599160 AM

SQL>

下面是glogin.sql文件的内容,有需要的小伙伴自行使用:

--
-- Copyright (c) 1988, 2005, Oracle.  All Rights Reserved.
--
-- NAME
--   glogin.sql
--
-- DESCRIPTION
--   SQL*Plus global login "site profile" file
--
--   Add any SQL*Plus commands here that are to be executed when a
--   user starts SQL*Plus, or uses the SQL*Plus CONNECT command.
--
-- USAGE
--   This script is automatically run
--
set line 120
col parameter for a30
col value for a40
col property_name for a25
col property_value for a30
col description for a30

col ename for a15
col job for a12
col table_name for a15
col username for a15
col account_status for a20
col dname for a20
col loc for a20
col owner for a15
col column_name for a20
col constraint_name for a25
col constraint_type for a25
col index_name for a20
col index_type for a20

col TABLESPACE_NAME for a25
col OBJECT_NAME for a20
col ROLE for a30
col GRANTED_ROLE for a30

col view_name for a20
col text for a30

col sequence_name for a25
col privilege for a20
col grantor for a12

col oracle_username for a25
col os_user_name for a25

column CURRENT_TIMESTAMP  format a50
column LOCALTIMESTAMP format a40