sql - 为什么这个 SQL 语法会引发错误?
问题描述
在较长的脚本中执行此语句时,我不断收到错误消息:
IF EXISTS (SELECT 1 FROM sys.columns
WHERE name = N'uncertainty_requested'
AND object_id = object_id(N'workorder'))
BEGIN
PRINT 'workorder.uncertainty_requested exists';
END
ELSE
BEGIN
ALTER TABLE workorder
ADD uncertainty_requested CHAR(1);
UPDATE workorder
SET uncertainty_requested = 'F';
PRINT 'workorder.uncertainty_requested added.'
END
GO
错误信息是:
消息 207,级别 16,状态 1,第 10 行
无效的列名称“uncertainty_requested”。
使用 SQL Server 2012。
解决方案
代码在执行之前编译,缺少的列是编译时错误。您可以使用动态 SQL 处理此问题:
ALTER TABLE workorder
ADD uncertainty_requested CHAR(1);
exec sp_executesql N'UPDATE workorder SET uncertainty_requested = ''F''';
PRINT 'workorder.uncertainty_requested added.'
推荐阅读
- javascript - 发送表单时更改按钮/图标
- wordpress - 根据类别在 3 个不同的主页位置显示一种自定义帖子类型
- node.js - CastError:模型“Product”的路径“_id”处的值“XXX”转换为 ObjectId 失败
- azure - Azure ARM:deploymentScripts 和第一方应用程序标识错误
- swift - SwiftUI - 是否可以在显示后更改 ActionSheet 按钮文本?
- sql - 带有 ODBC SQL 查询的 Julia ReadOnlyMemoryError
- python - 从抓取结果python中删除html元素
- python - 如何提取具有非 ASCII 字符名称的电报组成员?
- r - 嗨,我是 r 的新手,并试图在 r 中使用 grad
- mongodb - Uncaught (in promise) TypeError: Cannot use 'in' operator to search 'validateStatus' in