我在数据库中有一个表Country,其中包含以下字段
现在我必须编写一个程序,首先检查@CountryName是否存在。如果它已经存在,它应该更新该行。如果它不存在,它应该执行插入操作...
答案 0 :(得分:2)
我认为下面的脚本可以帮助你。
CREATE PROCEDURE ProcedureName
@CountryName nvarchar(100),
@CountryID int
AS
BEGIN
IF EXISTS (SELECT 1 FROM dbo.Country WHERE CountryName = @CountryName)
BEGIN
--UPDATE
END
ELSE
BEGIN
--INSERT
END
END
您也可以使用SQL的merge关键字执行上述代码 找到参考 here
答案 1 :(得分:2)
Create Proc [ProcedureName]
@CountryName nvarchar(100)
As
Begin
Declare @Count int
Set @Count = (Select count(CountryId) from Country where CountryName = @CountryName)
if @Count > 0
Begin
-- update
End
else
begin
-- insert
end
End
答案 2 :(得分:2)
如果是您正在使用的SQL Server 2005(或更高版本)版本,请考虑使用MERGE
语句。
Documentation for MERGE here.
merge [country] as target
using (select @CountryID, @CountryName) as source(id, name)
on (target.Countryid = source.id)
when matched then
update set CountryName = @CountryName
when not matched then
insert (CountryId, CountryName) values (source.id, source.name);