来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]
Posted
技术标签:
【中文标题】来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]【英文标题】:"SQL command not properly ended" error from UPDATE query [duplicate] 【发布时间】:2013-01-15 22:59:35 【问题描述】:我正在尝试用 VB.NET 代码更新 SQL Server 表中的多行。但是,在包含更多 SELECT
语句之前,我会专注于更新一行。我了解以下方法非常灵活,但它会抛出错误“SQL 命令未正确结束”:
UPDATE ndcs
SET PACKAGE_TYPE_CODE = x.package_type_code,
PACKAGE_DESC = x.package_desc,
COMMENTS = x.comments
FROM hub_non_dcs_product_pkgtype ndcs
INNER JOIN (SELECT PRODUCT_ID = 'SEN0982_pdf_1',
PACKAGE_TYPE_CODE = '',
PACKAGE_DESC = '',
COMMENTS = 'DPDC LITERATURE') x
ON x.product_id = ndcs.product_id
我的语法有什么问题?
【问题讨论】:
老实说,我看不出有什么问题 - 我通过 SQL 2008 运行它,它运行良好。您是否尝试过我所说的“以防万一愚蠢因素”的变化,例如'SEN0982_pdf_1' AS PRODUCT_ID...
。甚至,直接将其剥离并尝试使用 WHERE
子句?
您有完整的错误信息要发布吗?我也没有发现任何直接的语法错误。
您的错误消息似乎是 Oracle 错误,您确定这是 SQL Server 吗?如果在查询的末尾加上分号会发生什么?你能展示执行 SQL 代码的 VB.NET 代码吗?正如其他人所说,完整的错误消息/堆栈跟踪会很有用。
正如@Pondlife 建议的那样,您确定此查询是针对 SQL-Server 而不是 Oracle 运行的吗?
假设是Oracle,大概是this issue
【参考方案1】:
试试这个:
UPDATE ndcs
SET (PACKAGE_TYPE_CODE, PACKAGE_DESC, COMMENTS ) = (
SELECT
x.package_type_code,
x.package_desc,
x.comments
FROM
hub_non_dcs_product_pkgtype ndcs
INNER JOIN (SELECT PRODUCT_ID = 'SEN0982_pdf_1',
PACKAGE_TYPE_CODE = '',
PACKAGE_DESC = '',
COMMENTS = 'DPDC LITERATURE') x
ON x.product_id = ndcs.product_id
)
【讨论】:
以上是关于来自 UPDATE 查询的“SQL 命令未正确结束”错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章