iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >在SQL PLUS中格式化输出查询结果的方法是什么
  • 664
分享到

在SQL PLUS中格式化输出查询结果的方法是什么

2024-04-02 19:04:59 664人浏览 泡泡鱼
摘要

这篇文章主要讲解了“在sql PLUS中格式化输出查询结果的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在SQL PLUS中格式化输出查询结果的

这篇文章主要讲解了“在sql PLUS中格式化输出查询结果的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在SQL PLUS中格式化输出查询结果的方法是什么”吧!

一:过程代码

Create Or Replace Procedure FORMat_Sql(i_Sql In Varchar2) Is
  i_Cursor       Integer Default Dbms_Sql.Open_Cursor();
  Desc_Cols      Dbms_Sql.Desc_Tab;
  i_Status       Integer; --执行状态
  n_Colcnt       Number; --列数
  i_Col_Width    Integer := 3; --列间距,如果觉得太小可以调大一些
  n_Rowcnt       Number := 0; --记录结果行数
  Vc_Columnname  Varchar2(4000); --列头名字
  Vc_Col_Split   Varchar2(4000) := '---'; --记录和列头之间的分割线
  Vc_Columnvalue Varchar2(4000); --列值
  Type Typ_Collength Is Table Of Number Index By Binary_Integer;
  Tab_Typ_Collength Typ_Collength; --存放每一列值的最大长度
  l_Results         Long; --输出结果
Begin
  --第一次循环获取每列值的最大长度
  i_Cursor := Dbms_Sql.Open_Cursor; --打开游标;
  Dbms_Sql.Parse(i_Cursor, i_Sql, Dbms_Sql.Native);
  Dbms_Sql.Describe_Columns(i_Cursor, n_Colcnt, Desc_Cols);
  For i In 1 .. n_Colcnt Loop
    Dbms_Sql.Define_Column(i_Cursor, i, Vc_Columnvalue, 4000);
    Tab_Typ_Collength(i) := Length(Desc_Cols(i).Col_Name);
  End Loop;
  i_Status := Dbms_Sql.Execute(i_Cursor);
  Loop
    Exit When Dbms_Sql.Fetch_Rows(i_Cursor) < 1;
    For i In 1 .. n_Colcnt Loop
      Dbms_Sql.Column_Value(i_Cursor, i, Vc_Columnvalue);
      If Length(Vc_Columnvalue) > Tab_Typ_Collength(i) Then
        Tab_Typ_Collength(i) := Length(Vc_Columnvalue);
      End If;
    End Loop;
  End Loop;
  Dbms_Sql.Close_Cursor(i_Cursor);
  --第二次循环拼接输出结果
  i_Cursor := Dbms_Sql.Open_Cursor; --打开游标;
  Dbms_Sql.Parse(i_Cursor, i_Sql, Dbms_Sql.Native);
  Dbms_Sql.Describe_Columns(i_Cursor, n_Colcnt, Desc_Cols);
  For i In 1 .. n_Colcnt Loop
    Dbms_Sql.Define_Column(i_Cursor, i, Vc_Columnvalue, 4000);
  End Loop;
  i_Status := Dbms_Sql.Execute(i_Cursor);
  Loop
    Exit When Dbms_Sql.Fetch_Rows(i_Cursor) < 1;
    n_Rowcnt  := n_Rowcnt + 1;
    l_Results := l_Results || Rpad(n_Rowcnt, i_Col_Width + 3);
    For i In 1 .. n_Colcnt Loop
      Dbms_Sql.Column_Value(i_Cursor, i, Vc_Columnvalue);
      l_Results := l_Results ||
                   Rpad(Vc_Columnvalue || ' ',
                        Tab_Typ_Collength(i) + i_Col_Width);
    End Loop;
    l_Results := l_Results || Chr(10);
  End Loop;
  --定义列头
  Vc_Columnname := Rpad('NO', i_Col_Width + 3, ' ');
  For i In 1 .. n_Colcnt Loop
    Vc_Columnname := Vc_Columnname ||
                     Rpad(Desc_Cols(i).Col_Name,
                          Tab_Typ_Collength(i) + i_Col_Width,
                          ' ');
    Vc_Col_Split  := Rpad(Vc_Col_Split,
                          Length(Vc_Col_Split) + i_Col_Width,
                          ' ');
    Vc_Col_Split  := Rpad(Vc_Col_Split,
                          Length(Vc_Col_Split) + Tab_Typ_Collength(i),
                          '-');
  End Loop;
  Dbms_Sql.Close_Cursor(i_Cursor);
  --  Vc_Columnname := Vc_Columnname || Chr(10);
  --输出结果
  Dbms_Output.Put_Line('Total Row: ' || n_Rowcnt);
  Dbms_Output.Put_Line(Vc_Columnname);
  Dbms_Output.Put_Line(Vc_Col_Split);
  Dbms_Output.Put_Line(l_Results);
Exception
  When Others Then
    Dbms_Sql.Close_Cursor(i_Cursor);
    Raise;
End;

二:测试结果

TS@PROD> set serveroutput on size 999999
TS@PROD> select sql_text,sql_id,child_number,hash_value from v$sql Where sql_text Like'select * from emp%';
SQL_TEXT
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL_ID        CHILD_NUMBER HASH_VALUE
------------- ------------ ----------
select * from emp
a2dk8bdn0ujx7            0 1745700775
select * from emp
a2dk8bdn0ujx7            1 1745700775
select * from emp e,dept d where e.deptno = d.deptno
4cs33ya9vumkh            0 2478657104
TS@PROD> exec Format_Sql('select sql_text,sql_id,child_number,hash_value from v$sql Where sql_text Like''select * from emp%''');
Total Row: 3
NO    SQL_TEXT                                               SQL_ID          CHILD_NUMBER   HASH_VALUE
---   ----------------------------------------------------   -------------   ------------   ----------
1     select * from emp                                      a2dk8bdn0ujx7   0              1745700775   
2     select * from emp                                      a2dk8bdn0ujx7   1              1745700775   
3     select * from emp e,dept d where e.deptno = d.deptno   4cs33ya9vumkh   0              2478657104   
PL/SQL procedure successfully completed.

感谢各位的阅读,以上就是“在SQL PLUS中格式化输出查询结果的方法是什么”的内容了,经过本文的学习后,相信大家对在SQL PLUS中格式化输出查询结果的方法是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: 在SQL PLUS中格式化输出查询结果的方法是什么

本文链接: https://www.lsjlt.com/news/62986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在SQL PLUS中格式化输出查询结果的方法是什么
    这篇文章主要讲解了“在SQL PLUS中格式化输出查询结果的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在SQL PLUS中格式化输出查询结果的...
    99+
    2024-04-02
  • sqlplus查询结果格式化的方法是什么
    在SQL*Plus中,可以使用以下命令来格式化查询结果: 设置列格式: COLUMN column_name FORMAT fo...
    99+
    2024-04-09
    sqlplus
  • mybatis输出SQL格式化的方法是什么
    这篇文章主要讲解了“mybatis输出SQL格式化的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatis输出SQL格式化的方法是什么”吧!mybatis输出SQL格式化通过...
    99+
    2023-06-21
  • mysql格式化输出的方法是什么
    在MySQL中,可以使用以下方法来格式化输出结果: 使用 SELECT ... INTO OUTFILE 语句将查...
    99+
    2024-04-09
    mysql
  • python格式化输出方法是什么
    本篇内容介绍了“python格式化输出方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!#初级版本的格式化输出name =&...
    99+
    2023-06-02
  • python中print格式化输出的方法是什么
    Python中print函数的格式化输出可以通过占位符的方式实现。常用的占位符有: %s:字符串 %d:整数 %f:浮点数 示例...
    99+
    2024-04-02
  • python中的格式化输出方法
    目录1 使用字符串模运算符(%)格式化输出2 使用 format 方法格式化输出​3 使用 String 方法格式化输出前言: 有几种方法可以显示程序的输出。 数据可以以人类可读的形...
    99+
    2024-04-02
  • sql查询结果按条件排序的方法是什么
    在SQL中,可以使用ORDER BY子句对查询结果进行排序。ORDER BY子句可以按照一个或多个列进行排序,可以根据升序或降序排序...
    99+
    2023-09-16
    sql
  • datagrip格式化sql的方法是什么
    在DataGrip中,可以使用以下方法格式化SQL: 选中要格式化的SQL代码,然后按下快捷键Ctrl + Alt + L(Wi...
    99+
    2024-04-15
    datagrip sql
  • SQL慢查询优化的方法是什么
    本篇内容主要讲解“SQL慢查询优化的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL慢查询优化的方法是什么”吧!1.背景页面无法正确获取数据,经排查原来是接口调用超时,而最后发现是...
    99+
    2023-06-26
  • SQL Server中查询结果超出了查询时间范围的解决方法
    今天就跟大家聊聊有关SQL Server中查询结果超出了查询时间范围的解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。废话少说,直接上SQL代...
    99+
    2024-04-02
  • SQL Server中查询结果超出了查询时间范围解决方法
    废话少说,直接上SQL代码(有兴趣的测试验证一下),下面这个查询语句为什么将2008-11-27的记录查询出来了呢?这个是同事遇到的一个问题,个人设计了一个例子。 USE AdventureWorks2...
    99+
    2024-04-02
  • SQL Server中怎么将查询结果转换为Json格式
    这篇文章主要讲解了“SQL Server中怎么将查询结果转换为Json格式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL Server中怎么将查询结果...
    99+
    2024-04-02
  • plsql查询结果排序的方法是什么
    在PL/SQL中,可以使用ORDER BY子句来对查询结果进行排序。ORDER BY子句可以跟随在SELECT语句的末尾,并...
    99+
    2024-03-14
    plsql
  • Beam中SQL查询的方法是什么
    在Beam中,可以使用SQL查询来操作数据。SQL查询的方法如下: 创建一个Beam的PCollection对象,该对象表示要操作...
    99+
    2024-05-11
    Beam SQL
  • mysql查询结果命令行方式导出/输出/写入到文件的三种方法
    方法一: 直接执行命令: mysql> select count(1) from table into outfile '/tmp/test.xls';Query OK, 31 rows affected (0.00 ...
    99+
    2023-09-07
    mysql 数据库 java
  • Python格式化输出字符串的五种方法总结
    目录1. 引言2. 函数 center()3. 函数 ljust()4. 函数 rjust()5. 函数 zfill()6. 函数 title()7. 使用1. 引言 Python语...
    99+
    2024-04-02
  • oracle多表查询sql优化的方法是什么
    在Oracle中进行多表查询SQL优化可以通过以下方法来实现: 使用合适的连接方式:在多表查询时,选择合适的连接方式(如INNE...
    99+
    2024-04-09
    oracle
  • sql中去重查询的方法是什么
    在SQL中,可以使用DISTINCT关键字来进行去重查询。DISTINCT关键字用于删除SELECT语句返回结果中重复的行。...
    99+
    2023-09-16
    sql
  • python可以美化表格数据输出结果的工具是什么
    本文小编为大家详细介绍“python可以美化表格数据输出结果的工具是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“python可以美化表格数据输出结果的工具是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作