1
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 会指责同样的错误,但与其他列名,有人可以帮忙吗?

4

2 回答 2

0

一种可能性是将 IF 语句更改为以下内容:

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

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

于 2015-03-13T13:25:59.813 回答
0

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

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 

于 2015-03-16T12:35:11.223 回答