专栏首页bisal的个人杂货铺SQL工具集-格式化结果的SQL

SQL工具集-格式化结果的SQL

无论是数据库,还是其他的领域,一些工具是方便了我们日常的工作需求,但同时由于其封装了一些细节,因此若只是知道用法,不知道实现原理,对于个人来说,浪费了一次锻炼的机会,因为往往这些经典的工具,蕴含着一些可以借鉴的逻辑,以及设计思想,所谓“触类旁通”,才能增加我们的战斗力。

今天我们“SQL工具集”介绍的是一个存储过程,他的作者是大名鼎鼎的Tom,Oracle界最著名的一个网站AskTom,就是这个Tom,虽然现在Tom大叔已经退休了,但是网站还在被其他人运营,延续着Oracle学习者的热情。这个存储过程的名称是print_table,用于格式化打印SQL结果,为了做下对比,我们看下常规检索v$database视图的效果,

若不使用col格式化一些字段,输出是乱的,没有可读性。看下使用这个存储过程的效果,

非常整齐,不用图形化工具,就可以使用sqlplus读了。Tom在这篇帖子发布了这个存储过程, https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:1035431863958

原版存储过程接受两个参数,一个是SQL语句,一个是日期的格式化,默认值是’dd-mon-yyyy hh24:mi:ss’,

定义了一个内联的存储过程restore,用于脚本执行完成恢复配置,包括cursor_sharing参数、nls_date_format参数,以及关闭游标,

若输入参数p_date_fmt不为空,则需要存储系统默认的nls_date_format,用于restore,

为了让这个存储过程,执行的SQL语句能用上绑定变量,减小硬解析,设置cursor_sharing为FORCE,

解析和描述SQL语句原文,逐字段来定义,其中113是BLOB类型,此处不适用,按照4000字节定义,

逐字段来打印每一列,因为dbms_output仅打印255个字符/行,因此此处列显示200个字符截取了,同时列名右补空格满足30位,

执行完成/出现异常时则调用了restore。

Tom则形容这工具是最cool的打印语句脚本,

当然存储过程中任何地方,均可以自定义,例如对于判断字段属性BLOB,可以设置任何自己需要的格式,包括日期格式,例如书中使用的是删除日期格式化参数的版本,

执行存储过程有一个前提,设置serveroutput为on,Tom建议可以将此设置加入sqlplus的预处理中,编辑login.sql,

从这个存储过程,我们学到两点,

(1)经典的脚本,除了方便使用,往往包含了经典的逻辑、设计思想,有些可以借鉴,可以根据需求自定义,触类旁通,充分发挥这些脚本的价值。  (2)执行存储过程,需要设置serveroutput为on,才能显示输出。

print_table.sql文本可从我的github进行下载,

https://github.com/bisal-liu/oracle/blob/master/print_table.sql

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 经典的print_table学习

    最近上班路上读《Oracle性能优化与诊断案例精选》,发现eygle引用了一个非常方便的工具,原作者是大名鼎鼎的Tom,更加引起了我的关注。

    bisal
  • win7运行sqlplus报错“SP2-1503: 无法初始化 Oracle 调用界面”

    WIN7 64bit安装Oracle 10.2.0.1后,运行cmd-sqlplus / as sysdba会提示:

    bisal
  • 《Oracle Concept》第二章 - 15

    表簇是一组在相同数据块中共享普通列并存储相关数据的表。当表被簇集后,一个数据块就能包含多张表的行。例如一个数据块能存储来自employees和departmen...

    bisal
  • 经典的print_table学习

    最近上班路上读《Oracle性能优化与诊断案例精选》,发现eygle引用了一个非常方便的工具,原作者是大名鼎鼎的Tom,更加引起了我的关注。

    bisal
  • 存储过程详解

    存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表...

    郑小超.
  • 数据库|存储过程的管理

    存储过程是由一系列Transact-SQL语句组成的程序,它们经过编译后保存在数据库中。因此存储过程比普通Transact-SQL语句执行更快,且可以多次调用。...

    算法与编程之美
  • SecureCRT和乱码

    对于vi或vim乱码,则需要在~/.vimrc文件中设置encoding、fileencoding或fileencodings,如:

    一见
  • 深入解析和定制Oracle优化工具

    首先不会Oracle的我觉得也可以听懂。哈哈,因为我不会专门讲oracle里的太细的东西。这部分的内容比较通用,可以借鉴思路。 我会在我的平台里面糅合这些思想,...

    jeanron100
  • zhangdd谈ceph(一)初识ceph

    最近在研究ceph分布式存储,刚开始接触时感觉很混乱,无从下手的感觉。于是根据以往经验,先网上看各种资料,一个字 感觉乱,各种配置 各种环境 各种bug 各种坑...

    zhangdd
  • 不用编程,这个工具除了帮你绘制漂亮的图还提供Python和R代码以及统计分析

    如果你不会编程,又想绘制一些好看的图片,除了其他绘图软件以外,我这里给大家推荐一个工具——Plotly,这个工具我收藏很久了,也没有用过,今天突然想起来,就分享...

    DoubleHelix

扫码关注云+社区

领取腾讯云代金券