繁体   English   中英

如果在SQL中出现“无效的列名”

[英]IF in sql “Invalid column name”

DECLARE @resultado int;
SET @resultado = (SELECT COUNT(serial) FROM inventario 
WHERE serial ='strSerialNumber'); 
IF @resultado = 1 
BEGIN 
    UPDATE inventario SET simnao ='strVariavel8', local ='strVariavel1', portaria ='strVariavel9', galpao ='strVariavel2', sala ='strVariavel3', ute ='strVariavel4', ramal ='5213', centrodecusto ='strVariavel6', etiquetaMonitor ='strVariavel7', data ='date', hora ='time'
    WHERE serial ='strSerialNumber'
END 
IF (@resultado = 1) and (data = '') 
BEGIN
    UPDATE inventario SET simnao ='strVariavel8', local ='strVariavel1', portaria ='strVariavel9', galpao ='strVariavel2', sala ='strVariavel3', ute ='strVariavel4', ramal ='5213', centrodecusto ='strVariavel6', etiquetaMonitor ='strVariavel7', data ='date', hora ='time'
END
IF @resultado = 0
BEGIN
    INSERT INTO inventario (serial, hostname, simnao, usuario, local, portaria, galpao, sala, UTE, ramal, centrodecusto, etiquetamonitor, data, hora) 
    VALUES ('strSerialNumber','strHostname','strVariavel8','strUsuario','strVariavel1','strVariavel9','strVariavel2','strVariavel3','strVariavel4','3215','strVariavel6','strVariavel7','date','time')
END

我有这段代码,这应该可以工作,但是sql提示我没有名为“ data”的列名,但是我肯定有,如果我为任何其他列更改了“ data”,则sql会报告相同的错误,但是列名,有人可以帮忙吗?

一种可能是将IF语句更改为以下形式:

IF (@resultado = 1) AND EXISTS (SELECT 1 FROM inventario 
                                WHERE serial = 'strSerialNumber' AND data = '')

这将检查找到的单行的“数据”值,其中空字符串的序列号为“ strSerialNumber”,如果该行存在,则返回true。 如果该值不是'',则该行不存在,并且IF测试将失败,我认为这是您想要的。

答案是声明一个数据变量,如下所示:

 DECLARE @resultado int; DECLARE @data1 varchar(15); SET @data1 = (SELECT data FROM inventario WHERE serial ='strSerialNumber'); SET @resultado = (SELECT COUNT(serial) FROM inventario WHERE serial ='strSerialNumber'); IF @resultado = 1 AND @data1 IS NOT NULL OR @data1 != '' BEGIN SET @resultado = 10 END IF (@resultado = 1) AND @data1 is null or @data1 = '' BEGIN UPDATE inventario SET simnao ='strVariavel8 ', local ='strVariavel1', portaria ='strVariavel9', galpao ='strVariavel2', sala ='strVariavel3', ute ='strVariavel4', ramal ='7567', centrodecusto ='strVariavel6', etiquetaMonitor ='strVariavel7', data ='date', hora ='time' WHERE serial ='strSerialNumber' set @resultado = 5 END 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM