我想知道如何使用update释放IF,以及如何使用nvarchar输入执行过程。有两个值的表字典('Orig','Translated')我需要根据输入添加或替换“Trasnslated”的过程。必须有2个输入,不能多也不能少。例如
CREATE PROCEDURE Translate_Orig (@Orig nvarchar(32),@Translated nvarchar(32))
AS
BEGIN
UPDATE Dictionary
IF EXISTS (SELECT * FROM Dictionary WHERE Dictionary.Orig=@Orig)
SET Dictionary.Translated=@Translated
ELSE INSERT INTO Dictionary VALUES (@Orig, @Translated);
END
GO
SET @Orig = N'Orig'
SET @Translated = N'traslated'
EXEC Translate_Orig (@Orig,@Translated);发布于 2013-05-28 21:26:55
CREATE PROCEDURE Translate_Orig (@Orig nvarchar(32),@Translated nvarchar(32))
AS
BEGIN
IF EXISTS (SELECT * FROM Dictionary WHERE Dictionary.Orig=@Orig)
BEGIN
UPDATE Dictionary
SET Dictionary.Translated=@Translated
END
ELSE INSERT INTO Dictionary VALUES (@Orig, @Translated);
END
GO
SET @Orig = N'Orig'
SET @Translated = N'traslated'
EXEC Translate_Orig (@Orig,@Translated);发布于 2013-05-28 22:00:39
确保您只是通过GO作为语句运行CREATE PROCEDURE。
发布于 2013-05-29 15:04:59
有一个EXEC运行得很好。没有括号。和"SET Dictionary.Translated=@Translated WHERE Dictionary.Orig=@Orig“
CREATE PROCEDURE Translate_Orig (@Orig nvarchar(32),@Translated nvarchar(32))
AS
BEGIN
IF EXISTS (SELECT * FROM Dictionary WHERE Dictionary.Orig=@Orig)
BEGIN
UPDATE Dictionary
SET Dictionary.Translated=@Translated WHERE Dictionary.Orig=@Orig
END
ELSE INSERT INTO Dictionary VALUES (@Orig, @Translated);
END
GO
DECLARE @Orig nvarchar(32);
DECLARE @Translated nvarchar(32);
SET @Orig = N'Name'
SET @Translated = N'Name_Translated'
EXEC Translate_Orig @Orig,@Translated; https://stackoverflow.com/questions/16793206
复制相似问题