我正在尝试创建一个程序来检查输入的数字(作为 nvarchar 类型)是否已经存在。如果存在,则进行更新,否则将向用户抛出错误。但是我无法创建该过程,因为我一执行命令 ERROR 102/156 SQL STATE 42000 就会出现。
CREATE PROCEDURE UpdateAWBUnique
(
@AWB as nvarchar,
@Internal as nvarchar
)
AS
BEGIN
SET NOCOUNT ON
if((SELECT count(*) From Def_tab WHERE AWB=@AWB) == 0)
BEGIN
UPDATE Def_tab SET AWB= @AWB
where Internal=@Internal
END
ELSE
BEGIN
PRINT 'Already Exits'
END
END
GO
仅供参考,我使用 Microsoft SQL Server。如何清除此错误并创建程序?
有条件地更新并查看是否发生了任何更改
UPDATE Def_tab
SET AWB = @AWB
WHERE Internal = @Internal
AND NOT EXISTS (SELECT 1 FROM Def_tab t WHERE t.AWB= @AWB)
IF (@@ROWCOUNT = 0)
PRINT 'Already Exits'
否则在并发环境中可能会发生一些事情
if((SELECT count(*) From Def_tab WHERE AWB=@AWB) == 0)
和
BEGIN
UPDATE Def_tab SET AWB= @AWB
使if
支票无用
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句