如果语句在SQL Server查询中无法正常工作

索拉·帕拉特卡(Saurabh Palatkar)

我有一个要在查询后运行的表

IF COL_LENGTH('table_name','IsDeleted') IS NOT NULL
BEGIN
    IF COL_LENGTH('table_name','IsActive') IS NOT NULL
    BEGIN
        UPDATE table_name 
        SET IsActive = ~IsDeleted
    END
    ELSE
    BEGIN
        EXEC sp_RENAME 'table_name.IsDeleted', 'IsActive', 'COLUMN'

        UPDATE table_name
        SET IsActive = ~IsActive
    END

    ALTER TABLE table_name
    DROP CONSTRAINT DF_table_name_IsDeleted
    ALTER TABLE table_name DROP COLUMN IsDeleted
END
ELSE
BEGIN
     --IsDeleted column does not exist
END

在我的表格中没有名称为“ IsDeleted”的列,因此不应在第一个if语句中输入。但是不知何故,它进入第一个if语句会给我错误消息:

无效的列名“ IsDeleted”。”

行SET IsActive =〜IsDeleted

我的查询有什么问题?为什么控制不参与其他部分。有语法错误吗?

IsActive和IsDeleted的类型为BIT

菲利克斯·帕米坦(Felix Pamittan)

这是因为SQL Server解析并验证该语句,而不考虑IF语句,这意味着它解析并验证了整个批处理。因此,在解析语句时:

UPDATE table_name SET  IsActive = ~IsDeleted

错误说:

无效的列名IsDeleted

请参阅以下示例:

IF 1 = 1 BEGIN
    CREATE TABLE #temp(col INT)
END
ELSE BEGIN
    CREATE TABLE #temp(col INT)
END

它产生一个错误:

数据库中已经有一个名为“ #temp”的对象。

解决方法是使用Dynamic SQL

DECLARE @sql NVARCHAR(MAX)
IF COL_LENGTH('table_name','IsDeleted') IS NOT NULL BEGIN

    IF COL_LENGTH('table_name','IsActive') IS NOT NULL BEGIN
        SET @sql = 'UPDATE table_name SET IsActive = ~IsDeleted'
        EXEC sp_executesql @sql
    END
    ELSE BEGIN
        EXEC sp_RENAME 'table_name.IsDeleted', 'IsActive', 'COLUMN'
        SET @sql = 'UPDATE table_name SET IsActive = ~IsActive'     
        EXEC sp_executesql @sql
    END
    ....
END

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL Server查询无法正常工作

来自分类Dev

SQL Server JOIN查询无法正常工作

来自分类Dev

如果语句在android中无法正常工作

来自分类Dev

如果语句无法正常工作

来自分类Dev

如果在SQL中查询语句?

来自分类Dev

SQL查询无法正常工作

来自分类Dev

SQL查询无法正常工作

来自分类Dev

NOT IN SQL查询无法正常工作

来自分类Dev

如果语句在Laravel Controller中无法正常工作

来自分类Dev

为什么以下php中的sql查询无法正常工作?

来自分类Dev

如果包含<>的条件语句无法正常工作

来自分类Dev

SQL Server中的最小功能无法正常工作给0

来自分类Dev

“ Not In”在sql中无法正常工作

来自分类Dev

FMDB sqlite的SQL查询无法正常工作

来自分类Dev

使用Python的SQL查询无法正常工作

来自分类Dev

SQL查询联接无法正常工作

来自分类Dev

Visual Studio SQL查询无法正常工作

来自分类Dev

FMDB sqlite的SQL查询无法正常工作

来自分类Dev

由于错误,SQL查询无法正常工作

来自分类Dev

SQL子查询无法正常工作

来自分类Dev

SQL SELECT查询无法正常工作

来自分类Dev

ORDER SQL查询无法正常工作

来自分类Dev

枢轴SQL查询无法正常工作

来自分类Dev

如果语句不能正常工作

来自分类Dev

SQL Select语句SubSelect无法正常工作

来自分类Dev

WHERE语句SQL无法正常工作

来自分类Dev

睡眠语句在C ++中无法正常工作

来自分类Dev

If语句在Javascript中无法正常工作

来自分类Dev

.bashrc中的if语句无法正常工作