问题标签 [quoted-identifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3517 浏览

sql-server - 在现有约束/规则/程序上更改 Quoted_Identifier

我目前正在使用 2008-r2 服务器上的旧式数据库,该数据库使用了许多在 Quoted Identifier 设置为 off 的情况下创建的对象。

我主要看这些类型:

我现在正在尝试更改引用标识符设置,因为我发现我什至无法更改约束,这让我立即感到困惑。

对于约束:我想我必须以某种方式制作一个临时克隆/副本,删除原始文件,然后使用副本重新创建它们,并将 Quoted_Identifier 设置为 ON,但我真的不知道如何执行此操作或如何执行此操作自动执行此操作,因为我的 SQL 技能有限。有人可以帮助我吗?或者有人知道更简单的替代方法吗?

0 投票
1 回答
1582 浏览

sql - 执行并设置 Quoted_Identifier

我有一个存储过程 [A],它创建另一个存储过程 [B]

[A] 永远不会由最终用户运行,并且没有参数或其他不受信任的数据。相反,我只是使用它来自动创建复杂的 SP [B]。[A] 除非其内部结构发生变化,否则将始终得到相同的结果。因此我认为这是安全的。

[B] 需要 Quoted_Identifiers ON,因为它使用 xml。

如果我复制并粘贴生成的 SP,它可以正常工作,但如果我让 [A] 使用 EXEC 创建它,那么 SP 在运行时会失败。

我尝试SET QUOTED_IDENTIFIERS ON在 [B] 内添加,但效果不明显。

如果我使用 sp_ExecuteSQL 也会出现同样的问题 我也尝试在调用 [B] 之前将其设置为,但这似乎也没有效果(但为什么它会在它始终打开的上下文中)

我的猜测是 EXEC 和 sp_ExecuteSQL 总是使用设置 OFF 并且 SET 命令由解析器而不是 SQL 引擎本身处理。那么如何让 EXEC 正确创建 proc 呢?

0 投票
2 回答
1676 浏览

sql-server - SQL Server:INSERT/UPDATE/DELETE 失败,因为以下 SET 选项的设置不正确:'QUOTED_IDENTIFIER'

我有一个相当尴尬的问题:

两周以来,每当我使用我的 SQL 脚本更新/创建存储过程后,当这些存储过程运行时,它们就会因上述错误而失败。

其他处理这个问题的帖子对我没有帮助。

这里有一些参数,有助于排除不适用于我的情况的常见解决方案:

  1. 我的存储过程脚本可以在我的笔记本电脑(SQL Server 2012、Windows Server 2008 R2)上完美运行。

  2. 我的存储过程脚本在任何其他机器上正确创建存储过程(这是我们的构建机器,安装了 SQL Server 2012;我们的 TEST 服务器,安装了 SQL Server 2005,我们的 PROD 服务器,安装了 SQL Server 2005)。但是,存储过程不会在我以外的任何其他机器上运行。

  3. 我在我的机器上使用我们的生产 SQL Server (SQL Server 2005) 的数据库备份(就像这里的任何其他机器一样)。

  4. 即使是最基本的存储过程也会失败(例如DELETE myTable WHERE ID = @delID)。

  5. 在我检查过的每个 SQL Server 安装中,引用标识符OFF在服务器和数据库级别都设置为 (!)。那么为什么我的存储过程突然需要将此选项设置为ON

  6. SQLCMD用来运行我的脚本。这使我可以选择在USE语句中动态设置服务器实例的数据库名称。

  7. 我的脚本只包含一个USE语句,并且紧跟在ALTER PROCEDURE;之后。或者IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ...

这一切都工作了好几年,但突然,从两周前开始,用我的脚本创建的存储过程突然失败了。

我知道我可以在我的脚本中手动设置QUOTED_IDENTIFIER-ON但我不想。这里有问题。我想知道那个问题是什么。

这里发生了什么事?

0 投票
4 回答
7209 浏览

sql - PostgreSQL 中的“'order' 处或附近的语法错误”

我正在尝试将名为order的列添加到我的表中。我意识到order是 SQL 中的保留字。那么,我该怎么做呢?我的命令:

我也试过:

PostgreSQL 9.1。

0 投票
1 回答
583 浏览

parsing - Parsing single qoute char in a single-quoted string in parsec

I've got a silly situation in my parsec parsers that I would like your help on.

I need to parse a sequence of strongs / chars that are separated by | characters. So, we could have a|b|'c'|'abcd'

which should be turned into

Space is not allowed, unless inside of a ' ' string. Now, in my naïve attempt, I got the situation now where I can parse strings like a'a|'bb' to [a'a,bb] but not aa|'b'b' to [aa,b'b].

Now, how do I tell the parser to consider ' a stoping ' iff it is followed by a | or white space? (Or, get some ' char counting into this). The input is user generated, so I cannot rely on them \'-ing chars.

0 投票
1 回答
3896 浏览

sql - Postgres 列不存在

其他人编写了一个有效的 SQL Server 查询,我负责将其移植到 Postgres。

除了非常基本的 SQL 命令之外,我真的不了解这两个数据库(我正在按照教程的方式进行操作,并将继续以任何一种方式进行,但我希望尽快解决这个问题)。

无论如何,我在第 4 行遇到了错误,

错误:timeloggedtoday.date_logged 列不存在

认为这来自第 89 行附近的部分(标有 **),但我无法弄清楚语法应该是什么——我尝试从文档中复制 WITH/AS 部分,但要么我是仍然犯错误或错误在其他地方。下面可能有很多重复/无关的代码,但我认为最好将它们全部包含在内,因为当我更改为 Postgres 语法时,很容易引入其他错误。

编辑:

如果我删除有问题的部分,错误将更改为

错误:列 timelogged1daysago.date_logged 不存在

这是下一批类似的代码,让我相信我在命名我的临时表时犯了一些语法错误(正确的术语?)但我看不出有什么问题,而且很难在文档中找到相关部分......毫不奇怪,谷歌搜索“With”或“As”毫无帮助。

编辑:更简单的查询

我想我已经编辑了一些无关的东西,希望能找到这个错误。无论如何,这个较短的查询至少给了我同样的错误,所以这可能更容易帮助我调试:

0 投票
4 回答
90268 浏览

sql - PostgreSQL 错误:42P01:关系“[表]”不存在

我在使用 PostgreSQL 9.3 和使用 qoutes 创建的表时遇到了这个奇怪的问题。例如,如果我使用 qoutes 创建一个表:

该表已正确创建,我可以看到在 pgAdminIII 的 SQL 窗格中查看时保留了引号。但是当我查询数据库以查找所有可用表的列表(使用以下查询)时,我看到结果不包含表名周围的引号。

由于该表是用引号创建的,因此我不能直接使用从上述查询返回的表名,因为它未加引号并在标题中发布错误。

我可以尝试在所有查询中用引号将表名括起来,但我不确定它是否会一直工作。我正在寻找一种方法来获取在结果中用引号引起来的表名列表。

我对列名也有同样的问题,但我希望如果我能找到表名问题的解决方案,类似的解决方案也适用于列名。

0 投票
3 回答
1495 浏览

sql-server - 简单的 SQL - 在 openquery 中使用格式

我有以下查询,在 Wonderware(工业 HMI)Historian 应用程序中使用 MS SQL Server。以“ww”开头的关键字是 Wonderware 特有的,wwResolution 每 24 小时获取一次结果:

SET QUOTED_IDENTIFIER OFF

我想尝试格式化查询,所以我这样做:

format([BarRoom_GASMETER.ACC],'###,###,###,###,###.##') as 'Bar Room'

但我得到“发生错误”。在这种情况下我应该如何使用格式有什么建议吗?提前感谢您的答案。添加快照,您必须将其保存在本地才能阅读:在此处输入图像描述

我认为这与处理“引用标识符”的方式有关。

0 投票
2 回答
759 浏览

sql - 如何在 Oracle 中为用户 + 表名组合使用带引号的标识符?

在我的 Oracle DB 设置中,所有表都是在专用用户帐户下创建的SYS0MYUSER。在我的系统上执行以下查询时,我得到了SQL Error: ORA-00903: invalid table name

我试图像这样转义保留的关键字:

但后来我又犯了一个错误SQL Error: ORA-00942: table or view does not exist

转义用户名+保留关键字组合的正确方法是什么?

更新:关于表别名我也必须使用双引号吗?

0 投票
3 回答
71114 浏览

sql - 错误:关系列不存在 PostgreSQL,无法运行插入查询

嗨,我正在尝试插入表 tester3,当我使用语法时它失败了

工作正常。

我想我遗漏了一些非常微不足道的东西,我尝试了其他一些列名,其中一些工作正常,一些不工作。我很困惑。PostgreSQL 对插入查询的第一种语法适用的列名有限制吗?


编辑 :

结帐 Girdon Linoff回答,正如Frank Heikens指出的其他不带引号的列名是小写的。

小写列是 PostgreSQL 中的标准列,也可以不带引号使用