暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 中的 DBMS_OUTPUT.PUT_LINE 函数学习指南

原创 小小亮 2022-10-13
7475

在本指南中,您将了解 Oracle 中的 DBMS_OUTPUT.PUT_LINE 函数的作用,查看一些示例,了解如何在不同的编辑器中启用它,并了解为什么不应在生产代码中使用它。

让我们来看看。

什么是 DBMS_OUTPUT?

DBMS_OUTPUT 是 Oracle 数据库中的一个包。包是包含代码的对象,例如函数和过程。DBMS_OUTPUT 包包含让您在代码中发送和显示消息的代码。

什么是 DBMS_OUTPUT.PUT_LINE?

根据我的经验,DBMS_OUTPUT 包中的 PUT_LINE 函数是使用最广泛的函数之一。

此功能允许您将消息写入屏幕。

它通过将您指定的文本放置到缓冲区来工作。当过程完成时,该缓冲区将写入 IDE 或程序中的屏幕。

它通常用于在PL/SQL 程序中的某些点调试或显示消息。

在调用 PL/SQL 程序完成之前,不会发送 PUT_LINE 函数写入的消息。在运行代码时,无法提前编写它们或“刷新缓冲区”。

什么是限制?

PUT_LINE 函数的最大行大小为 32,767 字节。如果超过此值,您将收到 ORA-20000 和 ORU-10028 错误。

缓冲区的最大大小没有限制,但默认为 20,000 字节,最小为 2,000 字节。它可以在数据库中更改。如果文本对于缓冲区来说太大,您将收到 ORA-20000 错误和 ORU-10027 错误。

示例 – 匿名块

让我们看一个 DBMS_OUTPUT.PUT_LINE 函数的示例。

以下是如何在简单的匿名代码块中使用 PUT_LINE 函数。

BEGIN  DBMS_OUTPUT.PUT_LINE('Hello');END;

运行此代码时,您将在 IDE 中看到以下输出:

Hello

这是一个简单的语句,但显示了如何编写消息。

IDE 不显示 PUT_LINE 输出?

您是否正在运行 SQL*Plus、SQL Developer 或其他 IDE,但没有看到任何输出?

默认情况下,许多 IDE 不显示输出。

要查看 SQL*Plus 中的输出,您需要先启用 SERVEROUTPUT。为此,您可以在代码开头添加 SET SERVEROUTPUT ON。

这是使用您的代码启用它的示例。

SET SERVEROUTPUT ON;BEGIN  DBMS_OUTPUT.PUT_LINE('Hello');END;

这将在 SQL*Plus 中显示该消息。

要在 SQL Developer 中启用输出,您需要:

  1. 通过转到查看 > DBMS 输出显示 DBMS_OUTPUT 面板

  2. 为当前连接添加选项卡

  3. 运行你的代码

我已经在本指南中解释了这些步骤以及屏幕截图。

示例 – 存储过程

如果您想在存储过程或函数中使用 PUT_LINE,那么您的代码可能如下所示。

此过程计算两个数字的总和并将输出显示到屏幕上。

CREATE OR REPLACE PROCEDURE add_numbers(num1 NUMBER, num2 NUMBER)AS  sum_number NUMBER;BEGIN  sum_number := num1 + num2;  DBMS_OUTPUT.PUT_LINE('The sum is ' || sum_number);END;

创建过程后,您可以运行它。

CALL add_numbers (4, 6);

此调用的输出是:

The sum is 10

这演示了如何在 PL/SQL 过程或函数中使用 DBMS_OUTPUT.PUT_LINE。

为什么你不应该在生产中使用它

此 PUT_LINE 函数有助于在代码的不同点显示值和文本。

编写代码时,在整个代码中放置一堆 PUT_LINE 调用会很有帮助,这样您就可以看到正在执行的操作或变量的值。

但是,有一些原因不应该在可能投入生产的代码中使用它。

Steven Feuerstein写了一篇很棒的文章。他的理由是:

  • 除非您通过在 IDE 中设置 serveroutput on 或等效选项来启用它,否则您不会看到输出。

  • 它只接受可以转换为字符串的字符串或值。

  • 如果程序意外退出,则输出不会显示并丢失。

  • 当代码在生产中时,无处可看到输出。

那么解决方案是什么?

Steven 建议使用不同类型的跟踪来监控您的代码。您可以使用诸如Logger之类的开源工具,也可以构建自己的包装器。

这将允许您将任何输出写入开发环境中的屏幕或生产中的表格。您还可以在不调整代码的情况下启用和禁用输出功能。

结论

DBMS_OUTPUT.PUT_LINE 函数使用简单,是编写代码时向屏幕显示消息的好方法。

有几件事需要注意,例如缓冲区限制以及如何在某些 IDE 中启用它,但这是一个非常有用的功能。

原文标题:A Guide to DBMS_OUTPUT.PUT_LINE

原文作者:Ben Brumm

原文链接:https://www.databasestar.com/dbms_output-put_line/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论