在 PL/SQL 块中使用单引号和双“单引号”

2024-01-29

这是需要执行的代码块:

DECLARE
STR CLOB;
BEGIN

STR := ' CREATE TABLE TNAME AS

SELECT ... FROM INPUT_TABLE IP
WHERE ((IP.DATE_FIELD = TO_DATE('12.08.2013', 'DD.MM.sYYYY'))) ' ;

EXECUTE IMMEDIATE (STR);

END;

该块由java代码构成。执行时,会抛出异常org.springframework.jdbc.BadSqlGrammarException。但当我改变时TO_DATE('12.08.2013', 'DD.MM.sYYYY') to TO_DATE(''12.08.2013'', ''DD.MM.sYYYY'')它执行成功。

这是我的问题:

1)为什么当我使用单引号时它会抛出异常?

2)单引号和双“单引号”有什么区别?

3)如果我总是使用双“单引号”,会有什么后果吗?


来自 Oracle 文档文本文字 http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements003.htm#autoId0:

在语法的顶部分支中:

  • c是用户字符集的任何成员。文字中的单引号 (') 前面必须有转义字符。 要在文字中表示一个单引号,请输入两个 单引号。

在您的原始版本中,紧接在12.08.2013被视为该字符串的结尾 - 它怎么知道以其他方式对待它?这12.08然后变成一个数字,但它不在有用的地方,所以解析器不知道如何处理它,所以你会得到一个错误。

在第二个版本中,您转义了作为实际文本值一部分的引号,因此 Oracle 知道它们是文本的一部分,而不是标记文本的结尾。当它到达分号之前的单独单引号时,它会看到that作为字符串的结尾,这就是你想要的。

正如@Parado所说,尝试显示转义引用的版本,您会看到它以可以直接运行的形式出现,转义的单引号本身以字符串形式出现,作为您的create陈述。

您确实需要转义所有单引号,但您可能会发现替代引用语法更容易,如文档中的第二个分支中所述。在你的情况下,这将是:

STR := q'[ CREATE TABLE TNAME AS
SELECT ... FROM INPUT_TABLE IP
WHERE ((IP.DATE_FIELD = TO_DATE('12.08.2013', 'DD.MM.sYYYY'))) ]';

这使得引用的文本文字更易于阅读,并且您不必担心捕获和转义其中的所有单引号。您只需确保选择文本中未出现的引号分隔符即可。显示的内容将与转义引用的版本完全相同。

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

在 PL/SQL 块中使用单引号和双“单引号” 的相关文章

  • Linq 选择与另一个表中的 ID 相等的项目

    我不确定这怎么可能 但我有两个表 我想通过表 1 的值从表 2 中获取值 表 1 有一个名为 rank 的外键 它是int 表 2 有一个名为 name 的值 它是string 现在表 1 的 排名 与表 2 的 ID 相关 所以当我说 v
  • 如何在 SQL 中选择“上一条”和“下一条”记录?

    I am building a blog post detail page on my site that will display display a previous and next link similar to how a typ
  • Postgres 上的 C 语言环境和 Posix 语言环境有什么区别?

    我知道 Postgres 上的数据库区域设置负责国家字符的正确顺序 正确的小写 大写等 但为什么有两种语言中立的语言环境 posix and c 它们之间有什么区别 还是只是一个中立的语言环境有两个不同的名称 UPDATE正如 Magnus
  • 如何在 SQL 中进行广度优先搜索?

    给定一棵存储为关系的树 Parent Child 1 2 1 3 3 4 3 5 2 6 7 8 7 9 如何获取给定节点的所有后代 例如 对于 1
  • SQL注入方法

    注射程序是 SELECT UserId Name Password FROM Users WHERE UserId 105 or 1 1 但是 我的问题是注入查询在 sql 中是如何工作的 当你在代码中将查询作为字符串时 就像这样 Quer
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • 选择每组最新的项目[重复]

    这个问题在这里已经有答案了 可能的重复 检索每组中的最后一条记录 https stackoverflow com questions 1313120 retrieving the last record in each group 我有 2
  • max()、分组依据和排序依据

    我有以下 SQL 语句 SELECT t client id max t points AS max FROM sessions GROUP BY t client id 它只是列出了客户 ID 以及他们所获得的最大积分 现在我想按 max
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • TSQL:无法对 COUNT(*) 执行聚合函数 AVG 来查找一天中最繁忙的时间

    考虑一个保存日志数据的 SQL Server 表 重要的部分是 CREATE TABLE dbo CustomerLog ID int IDENTITY 1 1 NOT NULL CustID int NOT NULL VisitDate
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 法语和西班牙语的特殊字符可以保存在 varchar 中吗?

    法语和西班牙语中有普通英语中不使用的特殊字符 重音元音等 varchar 是否支持这些字符 或者我需要一个 nvarchar 吗 注 我愿意NOT希望讨论我是否应该使用 nvarchar 还是 varchar 您在谈论什么 SQL 实现 我
  • 如何显示 RSpec 测试生成的 SQL 查询日志?

    我正在为我的 Rails 3 应用程序编写规范 我想测试数据库事务是否真的有效 如果能够看到我的应用程序在规范驱动下生成的 sql 查询 这将非常有帮助 有没有办法像在 Rails 控制台中一样查看查询 我正在使用 Rails 3 0 9
  • 如何限制两个表之间一对多关系中的多个数量?

    我有一个带有两个 MySql 表的 MySQL 数据库 第一个是第一个表 表 A 有一列具有唯一值 从值 从 1 到 n 在第二个表 2 表 B 中 我有两列 在第一个表中我有一个名称 在第二个我的值从 1 到 n 如果我在 中添加一个值
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • 将十六进制转换为字符串

    我想用HEXTORAW 从 ASCII 十六进制代码 30 获取 char 值 ASCII HEX 30 应返回 varchar 0 该怎么做呢 是HEXTORAW 正确的功能 你可以使用utl raw http docs oracle c

随机推荐

  • 获取通过ajax上传的文件的文件名

    我的问题很简单 我正在用 php 编写一个上传器类 并决定包含对 ajax 上传的支持 使用 Firefox 我检测到发送了标头 X File Name 我正在使用第 3 方 javascript 库进行上传 它将查询字符串中的文件名发送到
  • 如何防止用户调整我网站上的字体大小?

    如何防止用户调整我网站上的字体大小 事实上 出于可访问性的原因 您应该允许调整字体大小
  • NodeJS Crypto 加密到前端 javascript 解密

    我正在寻找 AES256 CBC 解密客户端 在nodeJS中我使用这个函数来加密 exports encrypt function txt cryptkey var cipher crypto createCipher aes 256 c
  • Visual Studio 设计器 - 限制属性网格以显示语言属性的某些特定语言

    我正在 Visual Studio 2013 C 中进行开发 并正在寻找一种方法来使 Windows 窗体的语言选择更容易本地化 在设计器中 您可以在 下选择您想要的语言 Design Language如果您需要新的本地化表单 Visual
  • 指定键盘快捷键来运行程序

    当我在 VBA 编辑器中按 F5 时 我总是想运行我的 Sub Skynet 程序 有没有办法为此过程分配键盘快捷键 根据微软的文档 http office microsoft com en us excel help run a macr
  • 连续触发光线投射测试

    下列的这个答案 https stackoverflow com a 54901850 3405291 我正在进行连续的光线投射 m rayCaster new Qt3DRender QRayCaster m scene gt rootEnt
  • 在 .net MVC 中渲染列表的子列表

    我仍在学习 net MVC 也许没有正确搜索我需要找到解决方案的内容 简而言之 我在数据库中有一个表 其结构如下 ID Category Subcategory FK 所以每个类别可能会出现多次 每个子类别也是如此 这是该类别所独有的 我想
  • 想要在我的按钮单击事件上使用 ajax 多个文件上传

    这是我的 aspx 页面代码
  • 锚链接着陆位置错误

    可能是一个愚蠢的问题 但老实说我无法理解这里出了什么问题 http harrisonfjord com thinkinc http harrisonfjord com thinkinc 我目前正在建设的网站 我想在以下位置创建一个锚链接ht
  • iOS 11 上的编程式 begin Refreshing() 在使用 largeTitles 模式时存在问题

    我们发现 UIKit 中似乎有一个错误 但想在这里发帖看看其他人是否也遇到这个问题或找到解决方案 我们正在尝试使用新的 iOS11 大标题和提升的搜索栏 刷新控件 我们似乎发现了一个问题 导航堆栈的根视图控制器显示了一个小显示问题 问题 A
  • Python 初学者。这段 Python 代码是否尽可能高效?

    这个问题 解决方案让我想到了另一个相关问题here https stackoverflow com questions 4997859 calculate a running total during a for loop python 帮
  • 通过axios访问响应头

    我正在使用 Axios 对 API 进行安全的 POST 调用 这会在 位置 下的响应标头中返回一个 URL 我可以看到 Chrome 的开发工具中填充了 URL 但 Axios 的 JS 响应 如下 不包含以下信息 任何建议都非常收到 发
  • 为什么不能使用 ioremap 然后使用 remap_pfn_range?

    在我的驱动程序中 我试图映射从返回的地址ioremap到用户空间地址 返回什么样的地址ioremap 它与一个有什么不同kmalloc地址 如何映射从返回的地址ioremap 应插入哪个地址remap pfn range 你不需要iorem
  • QItemDelegate 和 QStyledItemDelegate 有什么区别?

    这两个类都为模型中的数据项提供显示和编辑功能 QStyledItemDelegate较新 Qt 文档关于QItemDelegate指出 请注意 QStyledItemDelegate 已经接管了绘制 Qt 的工作 项目视图 我们建议在创建时
  • YQL JSON 脚本未返回?

    我这里有一个脚本 几乎直接复制下来this http net tutsplus com tutorials javascript ajax quick tip cross domain ajax request with yql and j
  • 在 Matlab R2016b 中恢复旧的显示格式

    在 Matlab R2016b 中 显示某些数据类型的变量会显示有关该类型的信息 当通过键入不带最后分号的方式显示变量时会发生这种情况 使用disp功能 比较例如 Matlab R2015b 旧格式 仅显示数据 gt gt x 10 20
  • 在 C 中将一定数量的字符打印到 stdout 的最快方法

    我必须将一定数量的空格打印到标准输出 但这个数量不是固定的 我正在使用 putchar 但我不确定这是否很快 在 C 中将一定数量的字符打印到 stdout 的最快方法是什么 另外 我无法使用系统功能 谢谢你的帮助 我只想用fwrite 简
  • 内存非常有限的嵌入式系统中的 STL

    我目前正在构建一个嵌入式系统 使用 ARM Cortex M3 处理器和 64 KB SRAM 目前 我正在寻找一种方法来确保 STL 容器的确定性性能 其中包括确保我不会在运行时耗尽内存 我主要关心 STL 容器如何执行动态内存分配 尽管
  • 修复 primeng DataTable 中的标题

    我正在使用 PrimeNG4 1 0 rc 2 我想要创建的是具有固定标题的数据表 即使我将表格滚动到底部 就像 stackoverflow 顶部的固定菜单一样 标题也应该始终可见 I tried scrollable and scroll
  • 在 PL/SQL 块中使用单引号和双“单引号”

    这是需要执行的代码块 DECLARE STR CLOB BEGIN STR CREATE TABLE TNAME AS SELECT FROM INPUT TABLE IP WHERE IP DATE FIELD TO DATE 12 08