在 SELECT 语句中使用自定义函数时,为啥我的 SQL 查询的输出显示不正确?

Posted

技术标签:

【中文标题】在 SELECT 语句中使用自定义函数时,为啥我的 SQL 查询的输出显示不正确?【英文标题】:Why does the output of my SQL query display incorrectly when using a custom function in the SELECT statement?在 SELECT 语句中使用自定义函数时,为什么我的 SQL 查询的输出显示不正确? 【发布时间】:2020-11-07 00:53:12 【问题描述】:

所以我正在学习如何在 PL/SQL 中定义自定义函数。当我使用我在常规 SELECT 语句中定义的任何函数时,脚本输出会添加大量破折号,并且可读性会受到影响。我正在使用最新版本的 SQL 开发人员。

我想要的样子:

SELECT dtstage, idstage
FROM bb_basketstatus
WHERE idbasket = 4;

DTSTAGE      IDSTAGE
--------- ----------
13-FEB-12          1
13-FEB-12          5

我得到了什么:

SELECT dtstage, status_desc_sf(idstage) Description
FROM bb_basketstatus
WHERE idbasket = 4;

DTSTAGE
---------
DESCRIPTION                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
13-FEB-12 
Order submitted                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

13-FEB-12 
Shipped 

SQL 开发人员中有设置还是我缺少函数定义?

【问题讨论】:

你确定这是 SQL Developer 吗?这看起来像 SQL Plus。 【参考方案1】:

这只是 SQLPlus / SQLDeveloper 脚本显示问题。

您可以使用column ... format 命令手动设置列宽:

column description format a50

select dtstage, status_desc_sf(idstage) description
from bb_basketstatus
where idbasket = 4;

增加行的默认宽度(默认为 80)也可能有用,例如:

set linesize 120

【讨论】:

值得注意的是,增加 linesize 本身对于在固定宽度的命令窗口上查看 sqlplus 输出没有帮助。此时命令行窗口本身将强制换行。如果我真的需要更长的行,我会假脱机输出,以便我可以在适当的文本编辑器中查看它。当然,如你所说,第一道防线是调整列宽。

以上是关于在 SELECT 语句中使用自定义函数时,为啥我的 SQL 查询的输出显示不正确?的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL 自定义函数中运行 select 语句

搜索时的Jquery select2自定义javascript函数

ORACLE当中自定义函数性优化浅析

使用 SELECT 语句查询自定义 postgresql 参数

用T-SQL语句自定义一表值函数

sql server 怎样用select语句调用自定义表值函数