请教多条SQL语句的问题

leon51 2019-01-31 04:38:28
现需要在表中根据条件插入或更新记录,由于不熟悉储存过程也没有权限,因此代码写得比较啰嗦。
于是将多个语句拼在一起,但在if处始终提示语法错误,请问应该如何修改?以下是简化后的代码。

DECLARE @id NUMERIC(10, 0)

SELECT @id = id FROM t1 WHERE pn = '123456'

IF @id > 0 --如果记录存在
UPDATE t1 SET status = 'Y' WHERE id=@id
ELSE
INSERT INTO t1(status, name) VALUES ('Y','张三')
END
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon51 2019-01-31
  • 打赏
  • 举报
回复
原来就是if后面多加了一个end的问题
victor_yang 2019-01-31
  • 打赏
  • 举报
回复
每条语句之间用go
victor_yang 2019-01-31
  • 打赏
  • 举报
回复

DECLARE @id NUMERIC(10, 0)

SELECT @id = id FROM t1 WHERE pn = '123456'

IF @id > 0 --如果记录存在
begin
SELECT @id = id FROM t1 WHERE pn = '123456'
SELECT @id = id FROM t1 WHERE pn = '123456'
UPDATE t1 SET status = 'Y' WHERE id=@id
end
ELSE
begin
INSERT INTO t1(status, name) VALUES ('Y','张三')
SELECT @id = id FROM t1 WHERE pn = '123456'
SELECT @id = id FROM t1 WHERE pn = '123456'
SELECT @id = id FROM t1 WHERE pn = '123456'
end --有多条语句就要用begin ...end了





leon51 2019-01-31
  • 打赏
  • 举报
回复
引用 1 楼 victor_yang 的回复:

DECLARE @id NUMERIC(10, 0)
 
SELECT @id = id FROM t1 WHERE pn = '123456'
 
IF @id > 0 --如果记录存在
    UPDATE t1 SET status = 'Y' WHERE id=@id
ELSE
    INSERT INTO t1(status, name) VALUES ('Y','张三')
--END  这个END不需要 可以删除了

请教多两个问题: 1,每条语句之间为何加了分号反而报错呢 2,如果if和else之前有多条语句是用括号还是begin...end
  • 打赏
  • 举报
回复
END 不需要
还有具体报错信息呢
victor_yang 2019-01-31
  • 打赏
  • 举报
回复

DECLARE @id NUMERIC(10, 0)

SELECT @id = id FROM t1 WHERE pn = '123456'

IF @id > 0 --如果记录存在
UPDATE t1 SET status = 'Y' WHERE id=@id
ELSE
INSERT INTO t1(status, name) VALUES ('Y','张三')
--END 这个END不需要 可以删除了

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧