dbms_output.put() 的缓冲方式与 dbms_output.put_line() 不同吗?

2023-12-11

我使用 Aqua Data Studio 通过分散输出语句来调试存储过程。

我在包中有一条违反完整性约束的删除语句:

DELETE FROM x WHERE x.ID = an_x_with_children;

正如预期的那样,我的过程在该行失败并出现 ORA-02292。我想看看它的价值an_x_with_children多变的。所以我用输出换行,如下所示:

dbms_output.put('Attempting to delete x: ' || an_x_with_children);
DELETE FROM x WHERE x.ID = an_x_with_children;
dbms_output.put(' Success');

并期望在完整性约束违反错误消息之前看到消息控制台中的最后一件事。但不打印!

现在,如果我更改输出以使用put_line()程序是这样的:

dbms_output.put_line('Attempting to delete x: ' || an_x_with_children);
DELETE FROM x WHERE x.ID = an_x_with_children;
dbms_output.put_line(' Success');

我在过程出错之前立即看到消息“尝试删除 x: 123”。

The docs为了dbms_output包中没有提到put and put_line程序在这方面表现有任何不同。例如,它说

使用 PUT 或 PUT_LINE 创建的输出会被缓冲。

因此,当过程出错时,我希望两者都不会显示输出,或者都不显示输出。

有人可以向我解释这种行为是怎么回事吗?


这是一个显示您所看到的行为的示例:

SQL> exec dbms_output.put_line('hello')
hello

PL/SQL procedure successfully completed.

SQL> exec dbms_output.put('hello again')

PL/SQL procedure successfully completed.

SQL> exec dbms_output.put(' and again')

PL/SQL procedure successfully completed.

SQL> exec dbms_output.new_line
hello again and again

PL/SQL procedure successfully completed.

The 文档说“SQL*Plus 在发出 SQL 语句或匿名 PL/SQL 调用后调用 GET_LINES”。

过程 GET_LINES 表示“此过程从缓冲区中检索行数组”。

使用 PUT,您还没有完成您的行。所以它不会打印。

NEW_LINE 过程也提到了这一点:“此过程放置一个行尾标记。GET_LINE 过程和 GET_LINES 过程返回由“换行符”分隔的“行”。每次调用 PUT_LINE 过程或 NEW_LINE 过程都会生成一行由 GET_LINE(S) 返回。”

Regards,
Rob.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dbms_output.put() 的缓冲方式与 dbms_output.put_line() 不同吗? 的相关文章

随机推荐

  • 是否可以将 Nesta CMS 包含到 Rails3 应用程序中?

    我想将 Nesta CMS 应用程序 安装 到 Rails3 应用程序上 这可能是 Nesta Sinatra 应用程序的原因 它应该是机架可安装层 但是您会怎么做 你将从哪里开始 有人有关于这个话题的经验吗 建议的文档 嘿卢卡 我一两个月
  • R中如何使用函数名的字符串来调用函数?

    我正在尝试使用给定的函数名称字符串来调用函数 E g print funcList 1 2 sin works mult lt mult 5 6 1 30 不起作用 func1 lt funcList 1 func1 5 6 func2 l
  • 从 URL 获取 HTTP 响应代码的最佳方法是什么?

    我正在寻找一种从 URL 获取 HTTP 响应代码 即 200 404 等 的快速方法 我不确定要使用哪个库 更新使用精彩请求库 请注意 我们使用的是 HEAD 请求 它应该比完整的 GET 或 POST 请求发生得更快 import re
  • 将片段实例保留在 FragmentPagerAdapter 中

    是否可以保留为某个片段创建的每个片段的实例 FragmentPagerAdapter在 的里面FragmentPagerAdapter 像这样的东西 Override public Object instantiateItem ViewGr
  • 同时下载多个页面?

    我想用Python编写一个脚本 它可以从数据库中获取url 并同时下载网页以加快速度 而不是等待每个页面一个接一个地下载 根据这个线程 Python 不允许这样做 因为称为全局解释器锁这可以防止多次启动相同的脚本 在投入时间学习 Twist
  • 无法从jupyterhub/jupyter笔记本调用tensorflow gpu,为什么?

    好吧 我认为八个小时足够我自己解决这个问题 所以我只想问大家 我在 jupyterhub 和 Jupyter Notebook 之外的名为 tensorflow 的虚拟环境中运行 tensorflow gpu 1 1 0 运行得很好 也就是
  • Scrapy CrawlSpider 基于 start_urls 的动态规则?

    我正在编写一个 Scrapy 抓取工具 它使用 CrawlSpider 来抓取网站 检查其内部链接 并抓取任何外部链接 域与原始域不同的链接 的内容 我设法用两条规则来做到这一点 但它们是基于正在爬网的网站的域 如果我想在多个网站上运行它
  • 当每一侧有不同数量的项目时,将弹性项目置于一行中居中

    如何实现图片上绘制的布局 例如 左侧 3 项 一项居中 两项在右侧 ul 是橙色 黑框是项目 ul display flex width 100 ul li Item 1 li li Item 2 li li Item 3 li li It
  • scala 集合:映射列表并携带一些状态?

    我似乎一直遇到这个问题 我想修改列表中的一些元素 但我需要在这样做时保留一些状态 因此地图不起作用 这是一个例子 scala gt val l1 List a b c d e f b c e b a l1 List String List
  • Arm 板上有两个以上的 SPI 设备,但只支持两个?

    我们其中一块板上的 Arm 处理器有一个 spi 端口 带有两条片选线 该处理器的数据表中提到它最多可以控制两个 spi 设备 是否可以使用 GPIO 作为附加 spi 设备的从选择 如何修改现有的库 设备驱动程序以支持此更改 到目前为止
  • Linux C++ 尝试使用绝对路径加载一个特定库,而所有其他库则使用相对路径链接

    我有以下问题 我正在尝试创建程序的可移植版本 因此我将 rpath 设置为 因此所有库都使用相对文件路径链接 这确实适用于除一个库之外的所有库 由于某种原因 只有当一个特定库存在于编译时链接的同一位置时 该程序才能工作 这是我自己写的 它的
  • 在 Flex Line 图表中显示数据点

    我有一个弹性折线图 有没有办法改变每个点的渲染并让它们始终显示 而不是必须将鼠标悬停在线条的某些部分上才能查看数据点的默认行为 几乎就像连接点类型视图 Try this
  • 使用 CGSizeMake 和 CGSize 有什么区别?这个比那个好吗?

    CGSize width 360 height 480 and CGSizeMake 360 480 似乎有同样的效果 一个比另一个更受青睐吗 有什么不同 The CGSize构造函数是 Swift 的扩展CGSize extension
  • Visual Studio 2022 发布窗口未检测身份验证状态

    我已经登录到 VS2022 因此也登录到 Azure 但在尝试发布应用程序时 我看到以下屏幕 从右上角可以看出我已经登录了 那么我什么时候得到这个 我什至尝试了这个建议link 我退出并删除了 localappdata IdentitySe
  • 可滚动的 JFree 域轴和自定义标记标签

    我有这段代码来绘制图表 效果很好 我这里需要两件事 在域轴 x 上我希望能够滚动 在标记上我看到一条粗粗的线 我希望能够看到该标记的一些可读文本 For now I see this output 缩放后我看到了这个 同样在域轴上我有毫秒值
  • 在 JavaScript 中重试 Promise 的通用解决方案

    我尝试给出一个重试承诺的通用解决方案 以下是我的方式 出现 未捕获 承诺 的错误 我该如何解决这个问题 function tryAtMost maxRetries promise let tries maxRetries return ne
  • SQL Server 2005 - 如何将图像数据类型转换为字符格式

    背景 我是一名软件测试人员 使用测试用例管理数据库 该数据库使用已弃用的图像数据类型存储数据 我对 SQL Server 比较缺乏经验 问题 具有富文本格式的字符数据存储为图像数据类型 目前 以人类可读格式查看这些数据的唯一方法是通过测试用
  • 在 PHP 中寻找加载依赖项/服务/配置的优雅方法?

    我正在构建一个 MVC PHP 框架 我想知道哪些是在我的类中加载所需内容的最佳实践 无论是其他类还是普通配置 到目前为止 我已经使用了单例 注册表以及最近的依赖注入容器 虽然许多人声称 DI 是可行的方法 但在我看来 它只是将组件之间的耦
  • ASP.NET 中的 OpenIDSelector 问题

    我正在尝试使用 asp net c 在我的网站中使用 OpenID 我正在使用 asp net v4 开发 asp net 表单网站 我遇到的问题是我的工具箱中的 openidselector 控件是由 dotnetopenauth dll
  • dbms_output.put() 的缓冲方式与 dbms_output.put_line() 不同吗?

    我使用 Aqua Data Studio 通过分散输出语句来调试存储过程 我在包中有一条违反完整性约束的删除语句 DELETE FROM x WHERE x ID an x with children 正如预期的那样 我的过程在该行失败并出