Oracle PL/SQL 块的语法图是否错误?

2024-05-04

我怀疑 a 的语法图plsql_block如中给出的Oracle® 数据库 PL/SQL 语言参考对于 Release 2 来说是错误的。 (以供参考,这是当前的链接 http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17126/block.htm到该文件)

以下 PL/SQL 可以正常编译:

declare

  cursor 
    cursor_definition 
  is select * from dual;

  variable_declaration number;

begin
  null;
end;

以下陈述是我根据上面的 PL/SQL 片段和 Oracle 语法图做出的假设。

  1. 声明部分(上面)由cursor definition随后是一个variable declaration(这又是一个item declaration).

  2. An item declaration can only是一个元素item list 1.

  3. A cursor definition can only是一个元素item list 2.

  4. An item list 2永远不能跟在item list 1.

现在variable declaration遵循cursor definition矛盾point 4。因此我的结论是 语法图是错误的。

也许我忽略了一些事情,在这种情况下我会very感谢您向我指出这一点。

请理解,错误的语法图本身对我来说没什么大不了的。但我正在编写 PL/SQL 解析器 并且解析器会错误地发现示例 PL/SQL 代码给出的确切情况。所以,为了改进解析器,我想 以获得更权威的序列图。


我同意。语法图明确指出plsql_block是有效地item_list_2前面有一个可选的item_list_1.

进一步,光标定义(与is位)只能出现在item_list_2和变量声明(带或不带=)是其中的一部分item_declaration设置,因此只能在item_list_1.

这些事实使您的代码示例不正确,因此,如果它成功编译,则:

  • 语法图是错误的;或者
  • 编译器没有严格遵循它们;或者
  • 您查看的代码涵盖了不同的语法图。

有趣的是,关于最后一个要点,11.1 的语法图 http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28370/block.htm#i32791略有不同。

声明部分可以是item_list_1 or item_list_2 or item_list_1其次是item_list_2.

有趣的是item_list_1可以有任意数量的item_declaration条目,这包括variable_declaration and cursor_declaration.

在 11.1 中,cursor_declaration可以是一个声明or基于 11.2 中的语言元素的定义(换句话说,没有cursor_definition类型,因为声明允许两者都在声明中)。

所以你所拥有的在 11.1 中是完全有效的,所以我要检查的第一件事是你实际上是running11.2 成功编译的地方。

It's still possible of course that you're running 11.2 and the syntax diagrams are wrong, in which case you should complain bitterly to Oracle but I don't know what sort of a response you'll get from a company whose flagship database product can't tell the difference between an empty varchar and a NULL (a).


(a) I'll never pass up an opportunity to mention this and advance the cause of my beloved DB2 :-)

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

Oracle PL/SQL 块的语法图是否错误? 的相关文章

  • RANK() OVER PARTITION 并重置 RANK

    如何获得在分区更改时重新启动的 RANK 我有这张表 ID Date Value 1 2015 01 01 1 2 2015 01 02 1
  • SQL 约束最小值/最大值?

    有没有办法为数字字段设置 SQL 约束 最小值应为 1234 最大值应为 4523 SQL Server 语法为the check约束 http technet microsoft com en us library ms179491 as
  • PostgreSQL 在递归查询中找到所有可能的组合(排列)

    输入是一个长度为 n 的数组 我需要生成数组元素的所有可能组合 包括输入数组中元素较少的所有组合 IN j A B C OUT k A AB AC ABC ACB B BA BC BAC BCA 随着重复 所以AB BA 我尝试过这样的事情
  • ORA-00933 与内部联接和“as”混淆

    我有一个使用以下命令从两个表中获取数据的查询inner join 但我收到错误SQL command not properly ended as 下面有一个星号 select P carrier id O order id O aircra
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 如何使用 BeautifulSoup 从表中选择特定行?

    So I have a question related to a previous question but I realized I needed to go one level more to get an 11 digit NDC
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 在 PostgreSql 中计算百分比

    例如我有一个这样的表 string adm A 2 A 1 B 2 A 1 C 1 A 2 通过 SQL 查询 我想要这样的结果 string perc adm A 50 B 100 C 0 我想要每个字符串中数字 2 出现的百分比 我可以
  • 自动删除主键序列中的间隙

    我正在创建一个网页 该网页根据用户操作将数据存储到 MySQL 数据库中 数据库有很多行 行的主键是列 rowID 它只是按顺序对行进行编号 例如 1 2 3 4 用户可以选择删除行 问题是当用户删除最后一行以外的行时 rowID 中有一个
  • SQL Server 2008 错误 233

    我正在使用以下 sql 脚本在 SQL Server 2008 中创建新登录名 CREATE LOGIN xyz WITH PASSWORD xyz DEFAULT DATABASE master DEFAULT LANGUAGE us e
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • NVARCHAR 变量在Where 子句中不起作用

    在 SQL Server 我想是 2018 我不知道如何判断 中 我的变量不起作用WHERE的条款NVARCHAR 比较应该返回值 但它什么也没返回 如果我只是手动输入声明的文本 它会突然起作用并返回值 没有任何逻辑原因应该有任何不同 类型
  • 将两个表合并为一个输出

    假设我有两张表 已知营业时间 ChargeNum CategoryID Month Hours 111111 1 2 1 09 10 111111 1 3 1 09 30 111111 1 4 1 09 50 222222 1 3 1 09
  • 位图内存不足错误

    我对这个错误有疑问 我从 URL 制作网站图标解析器 我这样做是这样的 public class GrabIconsFromWebPage public static String replaceUrl String url StringB
  • 更好地理解 SQL Server 中的架构

    就像标题一样 我还是一个SQLServer菜鸟 当我创建表 Mytable 时 数据库中显示 dbo Mytable 但有人能让我更好地理解模式吗 另外 在 Server 2008 TSQL 一书中 Itzik 说 在你的数据库中 表属于模
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不

随机推荐

  • php-webdriver:使用 click() 提交表单后等待浏览器响应

    除了使用sleep 在我的测试中 我想知道是否有人知道更好的策略 可以在继续我的断言之前显式等待表单提交 POST 完成 这是我的测试的一个非常浓缩的版本 结合使用 phpunitphp webdriver https github com
  • 在二维空间中从 A 点前往 B 点?

    我正在开发一个项目 需要我计算从可变点 A 到可变点 B 的 0 360 度航向 以使 A 点的物体面向 B 点 现在 我不确定如何实现这一目标 我用谷歌搜索但没有找到任何好的解决方案 在任何情况下 如何计算二维空间中从 A 点到 B 点的
  • 使用Orchard CMS进行单页面设计

    我有一个客户想要为他的网站进行单页面设计 其中每个 页面 的内容在用户浏览网站时使用 javascript 显示 隐藏 我不确定使用 Orchard 来解决这个问题的最佳方法 一种选择是将所有内容都放在单个页面内容项上 但这样您就无法使用
  • 输入流返回 NullPointerException (Java)

    以下是出现 NullPointerException 错误的代码 InputStream is getAssets open twentyone txt InputStreamReader iz new InputStreamReader
  • Word Automation - 禁用警报

    我正在自动化 Word 因此我想抑制所有警报 Word Application word new Word Application word DisplayAlerts Microsoft Office Interop Word WdAle
  • 强制上下文

    我有一个类 其中有一个私有属性和一个公共访问方法 Person function this Name asd var public new Object public Name function value if value undefin
  • 如何在 App Store Connect 上 AB 测试您的 iOS 应用程序图标?

    根据文档 您现在应该能够在 iOS 上对应用程序图标进行 AB 测试 但是 我不知道该怎么做 在这里 它说您需要包含一个支持上传备用图标的资产目录 https help apple com app store connect devb53f
  • 为什么根据检索顺序从 ADO Recordset 中获取空值而不是正确值? (DB表有NTEXT值)

    我有一个数据库表有两个datetime我需要使用 VBScript 从 ASP 页面读取可为空的列 这是我写的代码 Set cmd Server CreateObject ADODB Command With cmd ActiveConne
  • 在 Flex 选项卡式视图导航器之间切换

    我正在开发 FlexTabbedViewNavigatorApplication具有三个选项卡 ViewNavigator 元素 我想根据用户操作 通过 ActionScript 代码 从一个 ViewNavigator 切换到另一个 Vi
  • 提交表单问题... Enter key

    我有一个包含几个下拉列表和一个文本字段以及一个按钮的表单 当我单击按钮时 将调用 ajax 函数 ajax 然后调用一个 php 函数 该函数从 mysql 数据库获取结果 问题是我不能通过在表单中 按回车键来完成同样的事情 页面只会刷新
  • ActiveMQ - 向特定消费者发送消息

    连接单个 AMQ 代理和 100 个消费者 我会将消息发送给某个特定的消费者 这样其他消费者就不会收到它 客户端过滤不起作用 最简单的方法是创建虚拟目的地 将其命名为queue consumer 并在那里发送消息 然而 这将导致 100 个
  • 如何消除 Windows 应用商店主页上的恶意“计数器”?

    我有一个简约的主页 4 个按钮和一个 Bing 地图 但是 当我运行该应用程序时 我在左上角和右上角看到两个流氓 计数器 不知道如何描述它们 这是左上角的那个 是什么原因造成的 我怎样才能摆脱它们 顺便说一句 左边的黑色垂直条是 设计的 没
  • 使用正则表达式或其他解析从文件中读取值

    我有一个记录带有时间戳的值的文件 我必须在特定时间后读取特定值 例如 文件有 2013 03 03 19 08 22 car 2001 Ford 2013 03 03 19 08 27 Truck 2012 Chevy 2013 03 03
  • 安卓。安装复杂的加密 obb 文件时出现 ERROR_COULD_NOT_MOUNT

    我开发 Android 应用程序 它使用加密的 obb 文件 这个obb文件由3个文件组成 我用jobb工具创建的 在大多数设备上一切正常 但在三个设备上存在 ERROR COULD NOT MOUNT 而且我不明白如何解决它 我想在没有任
  • VS2010分析器:是否可以分析一种特定方法?

    可能有一些方法可以打开和关闭代码分析 或者您可以选择要分析的特定函数吗 您还可以使用分析器的数据收集 API 来启动和停止围绕您感兴趣的方法进行分析 请参阅这篇 MSDN 文章 http msdn microsoft com en us l
  • 如何在 PHP 中访问数组的数组

    我正在研究 Flight api 我正在发送请求 从位置 到位置 从日期等 并且我收到以下数组格式的响应 Array AvailRequest gt Array Trip gt ONE Origin gt BLR Destination g
  • 409 工件部署期间快照发布处理策略发生冲突

    我们有一组文件想要部署到工件 特别是测试结果 与以下模式匹配的文件似乎始终会生成409 rejected the resolution of an artifact due to conflict in the snapshot relea
  • 为什么隐式类型转换没有警告?

    我终于发现了程序中的一个错误 该错误是由返回类型的隐式类型转换引起的 即使g Wall对此没有任何警告 我想知道是否有什么办法可以快速找出这种无意识的错误 include
  • Shiny + downloadHandler + Openxlsx 不生成xlsx文件

    我试图通过 Openxlsx 包生成一个 xlsx 文件 其中包含文件内的反应名称和标头 输入变量为 ASL 1 和 Year 1 要保存在文件中的对象是反应表 tab 1 它是由应用程序生成的 没有任何问题 但是当我尝试下载它时 浏览器
  • Oracle PL/SQL 块的语法图是否错误?

    我怀疑 a 的语法图plsql block如中给出的Oracle 数据库 PL SQL 语言参考对于 Release 2 来说是错误的 以供参考 这是当前的链接 http download oracle com docs cd E11882