我有一个存储过程,是用来更新数据库的,大致如:CREATE PROC P_CO
@ID NCHAR(4),@NAME NVARCHAR(20)
AS
BEGIN-- @ID 为唯一不重复的主键
-- 判断@ID是否存在,若不存在则INSERT;荐存在则UPDATE
-- 请问该如何操作,急!非常感谢!INSERT [TB] SELECT @ID,@NAME
UPDATE [TB] SET ID=@ID,NAME=@NAME
END
GO
@ID NCHAR(4),@NAME NVARCHAR(20)
AS
BEGIN-- @ID 为唯一不重复的主键
-- 判断@ID是否存在,若不存在则INSERT;荐存在则UPDATE
-- 请问该如何操作,急!非常感谢!INSERT [TB] SELECT @ID,@NAME
UPDATE [TB] SET ID=@ID,NAME=@NAME
END
GO
解决方案 »
- 求助,求一函数。
- 用create database创建数据库mydb,如何知道数据库mydb已经存在,完整的SQL语句如何写
- 怎么搜索出字段中含有“SD”,但是不是包含在“MSD”中的数据
- 一个面试题
- 能不能将某个表的某个字段里面段落顺序随机打乱?
- 求一个比较复杂的触发器
- 100分求 高手 救我!!![Microsoft][ODBC SQL Server Driver][SQL Server]Warning: Fatal error
- 求一条SQL语句。。。。速度来啊。。求你们了。。高难度的。。
- 请问当字段中同时有汉字和数字时,怎样控制数字后面不能输入汉字,但前面可以?
- 请问有没有工具能比较两个Access文件
- 第一次上机应用就遇到问题了 请高手解答 在线等。。。
- 如何得到分组中的前几条纪录。
@ID NCHAR(4),@NAME NVARCHAR(20)
AS
BEGIN-- @ID 为唯一不重复的主键
-- 判断@ID是否存在,若不存在则INSERT;荐存在则UPDATE
-- 请问该如何操作,急!非常感谢!
if not exists (select 1 from [TB] where id=@id)
INSERT [TB] SELECT @ID,@NAME
else
UPDATE [TB] NAME=@NAME where ID=@IDEND
GO
CREATE PROC P_CO
@ID NCHAR(4),@NAME NVARCHAR(20)
AS
BEGIN-- @ID 为唯一不重复的主键
-- 判断@ID是否存在,若不存在则INSERT;荐存在则UPDATE
-- 请问该如何操作,急!非常感谢!UPDATE [TB] NAME=@NAME where ID=@IDINSERT [TB] SELECT @ID,@NAME
where not exists (select 1 from [TB] where id=@id)
END
GO
CREATE PROC P_CO
@ID NCHAR(4),@NAME NVARCHAR(20),@BOOL_OP INT
AS
BEGIN-- @BOOL_OP
-- 1:插入
-- 0:更新
IF @BOOL_OP=1
INSERT [TB] SELECT @ID,@NAME
ELSE
UPDATE [TB] NAME=@NAME where ID=@IDEND
GO
create procedure P_CO
@Id nchar(4),
@Name nvarchar(20)
as
begin
if exists(select 1 from tb where [Id] = @Id)
update tb set [Name] = @Name
else
insert into tb([Id], [Name]) select @Id, @Name
end
你上面写那个if else的过程已经够用了呀。
insert tb(id,name) vaules (@id,@name)
@BOOL_OP参数纯属多于
你有BOOL_OP参数的值都不必写存储过程了,直接判断执行一个语句就可以了BOOL_OP参数当作传出参数还差不多
@ID NCHAR(4),@NAME NVARCHAR(20)
AS
BEGIN-- @ID 为唯一不重复的主键
-- 判断@ID是否存在,若不存在则INSERT;荐存在则UPDATE
-- 请问该如何操作,急!非常感谢!UPDATE [TB] NAME=@NAME where ID=@ID
if @@rowcount !=1
insert into [tb] select @id,@name END
GO