问题标签 [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.
sql-server - 在现有约束/规则/程序上更改 Quoted_Identifier
我目前正在使用 2008-r2 服务器上的旧式数据库,该数据库使用了许多在 Quoted Identifier 设置为 off 的情况下创建的对象。
我主要看这些类型:
我现在正在尝试更改引用标识符设置,因为我发现我什至无法更改约束,这让我立即感到困惑。
对于约束:我想我必须以某种方式制作一个临时克隆/副本,删除原始文件,然后使用副本重新创建它们,并将 Quoted_Identifier 设置为 ON,但我真的不知道如何执行此操作或如何执行此操作自动执行此操作,因为我的 SQL 技能有限。有人可以帮助我吗?或者有人知道更简单的替代方法吗?
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 呢?
sql-server - SQL Server:INSERT/UPDATE/DELETE 失败,因为以下 SET 选项的设置不正确:'QUOTED_IDENTIFIER'
我有一个相当尴尬的问题:
两周以来,每当我使用我的 SQL 脚本更新/创建存储过程后,当这些存储过程运行时,它们就会因上述错误而失败。
其他处理这个问题的帖子对我没有帮助。
这里有一些参数,有助于排除不适用于我的情况的常见解决方案:
我的存储过程脚本可以在我的笔记本电脑(SQL Server 2012、Windows Server 2008 R2)上完美运行。
我的存储过程脚本在任何其他机器上正确创建存储过程(这是我们的构建机器,安装了 SQL Server 2012;我们的 TEST 服务器,安装了 SQL Server 2005,我们的 PROD 服务器,安装了 SQL Server 2005)。但是,存储过程不会在我以外的任何其他机器上运行。
我在我的机器上使用我们的生产 SQL Server (SQL Server 2005) 的数据库备份(就像这里的任何其他机器一样)。
即使是最基本的存储过程也会失败(例如
DELETE myTable WHERE ID = @delID
)。在我检查过的每个 SQL Server 安装中,引用标识符
OFF
在服务器和数据库级别都设置为 (!)。那么为什么我的存储过程突然需要将此选项设置为ON
?我
SQLCMD
用来运行我的脚本。这使我可以选择在USE
语句中动态设置服务器实例的数据库名称。我的脚本只包含一个
USE
语句,并且紧跟在ALTER PROCEDURE
;之后。或者IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ...
这一切都工作了好几年,但突然,从两周前开始,用我的脚本创建的存储过程突然失败了。
我知道我可以在我的脚本中手动设置QUOTED_IDENTIFIER
-ON
但我不想。这里有问题。我想知道那个问题是什么。
这里发生了什么事?
sql - PostgreSQL 中的“'order' 处或附近的语法错误”
我正在尝试将名为order的列添加到我的表中。我意识到order是 SQL 中的保留字。那么,我该怎么做呢?我的命令:
我也试过:
PostgreSQL 9.1。
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.
sql - Postgres 列不存在
其他人编写了一个有效的 SQL Server 查询,我负责将其移植到 Postgres。
除了非常基本的 SQL 命令之外,我真的不了解这两个数据库(我正在按照教程的方式进行操作,并将继续以任何一种方式进行,但我希望尽快解决这个问题)。
无论如何,我在第 4 行遇到了错误,
错误:timeloggedtoday.date_logged 列不存在
我认为这来自第 89 行附近的部分(标有 **),但我无法弄清楚语法应该是什么——我尝试从文档中复制 WITH/AS 部分,但要么我是仍然犯错误或错误在其他地方。下面可能有很多重复/无关的代码,但我认为最好将它们全部包含在内,因为当我更改为 Postgres 语法时,很容易引入其他错误。
编辑:
如果我删除有问题的部分,错误将更改为
错误:列 timelogged1daysago.date_logged 不存在
这是下一批类似的代码,让我相信我在命名我的临时表时犯了一些语法错误(正确的术语?)但我看不出有什么问题,而且很难在文档中找到相关部分......毫不奇怪,谷歌搜索“With”或“As”毫无帮助。
编辑:更简单的查询
我想我已经编辑了一些无关的东西,希望能找到这个错误。无论如何,这个较短的查询至少给了我同样的错误,所以这可能更容易帮助我调试:
sql - PostgreSQL 错误:42P01:关系“[表]”不存在
我在使用 PostgreSQL 9.3 和使用 qoutes 创建的表时遇到了这个奇怪的问题。例如,如果我使用 qoutes 创建一个表:
该表已正确创建,我可以看到在 pgAdminIII 的 SQL 窗格中查看时保留了引号。但是当我查询数据库以查找所有可用表的列表(使用以下查询)时,我看到结果不包含表名周围的引号。
由于该表是用引号创建的,因此我不能直接使用从上述查询返回的表名,因为它未加引号并在标题中发布错误。
我可以尝试在所有查询中用引号将表名括起来,但我不确定它是否会一直工作。我正在寻找一种方法来获取在结果中用引号引起来的表名列表。
我对列名也有同样的问题,但我希望如果我能找到表名问题的解决方案,类似的解决方案也适用于列名。
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'
但我得到“发生错误”。在这种情况下我应该如何使用格式有什么建议吗?提前感谢您的答案。添加快照,您必须将其保存在本地才能阅读:
我认为这与处理“引用标识符”的方式有关。
sql - 如何在 Oracle 中为用户 + 表名组合使用带引号的标识符?
在我的 Oracle DB 设置中,所有表都是在专用用户帐户下创建的SYS0MYUSER
。在我的系统上执行以下查询时,我得到了SQL Error: ORA-00903: invalid table name
我试图像这样转义保留的关键字:
但后来我又犯了一个错误SQL Error: ORA-00942: table or view does not exist
转义用户名+保留关键字组合的正确方法是什么?
更新:关于表别名我也必须使用双引号吗?
sql - 错误:关系列不存在 PostgreSQL,无法运行插入查询
嗨,我正在尝试插入表 tester3,当我使用语法时它失败了
但
工作正常。
我想我遗漏了一些非常微不足道的东西,我尝试了其他一些列名,其中一些工作正常,一些不工作。我很困惑。PostgreSQL 对插入查询的第一种语法适用的列名有限制吗?
编辑 :
结帐 Girdon Linoff回答,正如Frank Heikens指出的其他不带引号的列名是小写的。
小写列是 PostgreSQL 中的标准列,也可以不带引号使用