阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Oracle中print_table存储过程介绍

379次阅读
没有评论

共计 3454 个字符,预计需要花费 9 分钟才能阅读完成。

一直以来,觉得 MySQL 中使用 \G 参数改变输出结果集的显示方式非常好用,尤其是在命令行界面。但是 Oracle 数据库没有这个功能,今天在搜索到 Tom 大师的一篇博文时,发现大师用一个存储过程 print_table 实现了类似这样的功能。只是我们这些凡夫俗子不知道而已,特意整理在此,方便自己或有需要的人以后查看。

CREATE OR REPLACE PROCEDURE print_table(p_query IN VARCHAR2)
AUTHID  CURRENT_USER
IS
  l_thecursor  INTEGER DEFAULT dbms_sql.open_cursor;
  l_columnvalue VARCHAR2(4000);
  l_status      INTEGER;
  l_desctbl    dbms_sql.desc_tab;
  l_colcnt      NUMBER;
BEGIN
    EXECUTE IMMEDIATE ‘alter session set  nls_date_format=”dd-mon-yyyy hh24:mi:ss” ‘;
 
    dbms_sql.parse(l_thecursor, p_query, dbms_sql.native);
 
    dbms_sql.describe_columns (l_thecursor, l_colcnt, l_desctbl);
 
    FOR i IN 1 .. l_colcnt LOOP
        dbms_sql.define_column (l_thecursor, i, l_columnvalue, 4000);
    END LOOP;
 
    l_status := dbms_sql.EXECUTE(l_thecursor);
 
    WHILE (dbms_sql.Fetch_rows(l_thecursor) > 0 ) LOOP
        FOR i IN 1 .. l_colcnt LOOP
            dbms_sql.column_value (l_thecursor, i, l_columnvalue);
 
            dbms_output.Put_line (RPAD(L_desctbl(i).col_name, 30)
                                  || ‘: ‘
                                  || l_columnvalue);
        END LOOP;
 
        dbms_output.put_line(‘—————–‘);
    END LOOP;
 
    EXECUTE IMMEDIATE ‘alter session set nls_date_format=”dd-MON-rr” ‘;
EXCEPTION
  WHEN OTHERS THEN
            EXECUTE IMMEDIATE
            ‘alter session set nls_date_format=”dd-MON-rr” ‘;
 
            RAISE;
END;
/

如下测试所示:

SQL> set serveroutput on size 99999;
SQL> execute print_table(‘select * from v$session where sid=997’);
SADDR                        : 000000085FA35CA0
SID                          : 997
SERIAL#                      : 1
AUDSID                        : 0
PADDR                        : 000000085F6B7E70
USER#                        : 0
USERNAME                      :
COMMAND                      : 0
OWNERID                      : 2147483644
TADDR                        :
LOCKWAIT                      :
STATUS                        : ACTIVE
SERVER                        : DEDICATED
SCHEMA#                      : 0
SCHEMANAME                    : SYS
OSUSER                        : oracle
PROCESS                      : 5036
MACHINE                      : xxxx
PORT                          : 0
TERMINAL                      : UNKNOWN
PROGRAM                      : oracle@xxxxx (DBW0)
TYPE                          : BACKGROUND
SQL_ADDRESS                  : 00
SQL_HASH_VALUE                : 0
SQL_ID                        :
SQL_CHILD_NUMBER              : 0
PREV_SQL_ADDR                : 00
PREV_HASH_VALUE              : 0
PREV_SQL_ID                  :
PREV_CHILD_NUMBER            : 0
PLSQL_ENTRY_OBJECT_ID        :
PLSQL_ENTRY_SUBPROGRAM_ID    :
PLSQL_OBJECT_ID              :
PLSQL_SUBPROGRAM_ID          :
MODULE                        :
MODULE_HASH                  : 0
ACTION                        :
ACTION_HASH                  : 0
CLIENT_INFO                  :
FIXED_TABLE_SEQUENCE          : 0
ROW_WAIT_OBJ#                : -1
ROW_WAIT_FILE#                : 0
ROW_WAIT_BLOCK#              : 0
ROW_WAIT_ROW#                : 0
LOGON_TIME                    : 04-jul-2018 21:15:52
LAST_CALL_ET                  : 5272838
PDML_ENABLED                  : NO
FAILOVER_TYPE                : NONE
FAILOVER_METHOD              : NONE
FAILED_OVER                  : NO
RESOURCE_CONSUMER_GROUP      :
PDML_STATUS                  : DISABLED
PDDL_STATUS                  : DISABLED
PQ_STATUS                    : DISABLED
CURRENT_QUEUE_DURATION        : 0
CLIENT_IDENTIFIER            :
BLOCKING_SESSION_STATUS      : NO HOLDER
BLOCKING_INSTANCE            :
BLOCKING_SESSION              :
SEQ#                          : 34697
EVENT#                        : 3
EVENT                        : rdbms ipc message
P1TEXT                        : timeout
P1                            : 300
P1RAW                        : 000000000000012C
P2TEXT                        :
P2                            : 0
P2RAW                        : 00
P3TEXT                        :
P3                            : 0
P3RAW                        : 00
WAIT_CLASS_ID                : 2723168908
WAIT_CLASS#                  : 6
WAIT_CLASS                    : Idle
WAIT_TIME                    : 0
SECONDS_IN_WAIT              : 107
STATE                        : WAITING
SERVICE_NAME                  : SYS$BACKGROUND
SQL_TRACE                    : DISABLED
SQL_TRACE_WAITS              : FALSE
SQL_TRACE_BINDS              : FALSE
ECID                          :
—————–
PL/SQL procedure successfully completed.
 
SQL>

更多 Oracle 相关信息见 Oracle 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=12

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3454字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7799660
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...