存储过程 平行的2个IF ELSE 语句 只执行了一个

老十二 2018-06-01 05:32:35
写了一个存储过程,将输入的数据保存到一张表中(本来是张空表),用ISNUMERIC判断(暂不纠结PARTINDEX函数),分别判断2个输入的数据,第一个数值写进了空表,但是第二个写不进去,帮忙看下 是IF ELSE 的问题 还是UPDATE的问题

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROC [dbo].[infotrans]
@cp VARCHAR(20),
@cd VARCHAR(20)


AS
BEGIN

IF 1=ISNUMERIC(@cp)
INSERT INTO temp1(cperson_id) VALUES(@cp)
ELSE
PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cp)
RETURN

IF 1=ISNUMERIC(@cd)
UPDATE temp1 SET cdept_id=@cd WHERE cperson_id=@cp
ELSE
PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cd)
RETURN

END

...全文
1413 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
雨夹雪 2018-10-31
  • 打赏
  • 举报
回复

--楼主啊,你想如果不是数字就返回,不在继续执行,你得家begin end,酱紫嘛
IF 1=ISNUMERIC(@cp)
INSERT INTO temp1(cperson_id) VALUES(@cp)
ELSE
begin
PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cp)
RETURN
end

IF 1=ISNUMERIC(@cd)
UPDATE temp1 SET cdept_id=@cd WHERE cperson_id=@cp
ELSE
Begin
PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cd)
RETURN
End

weixin_41664753 2018-06-03
  • 打赏
  • 举报
回复
去掉return
吉普赛的歌 2018-06-02
  • 打赏
  • 举报
回复

刚上论坛吧
老十二 2018-06-02
  • 打赏
  • 举报
回复
引用 7 楼 yenange 的回复:
[quote=引用 6 楼 weixin_42345598 的回复:] [quote=引用 4 楼 sinat_28984567 的回复:] 楼主家return是想干什么?
有点自以为是,程序执行到了 ELSE return就是 输入不正确 然后弹出 如果不执行else return 就是个摆设 [/quote] 没事了就结贴吧[/quote] 谢谢帮助 以后再也不乱用returun了
吉普赛的歌 2018-06-02
  • 打赏
  • 举报
回复
引用 6 楼 weixin_42345598 的回复:
[quote=引用 4 楼 sinat_28984567 的回复:] 楼主家return是想干什么?
有点自以为是,程序执行到了 ELSE return就是 输入不正确 然后弹出 如果不执行else return 就是个摆设 [/quote] 没事了就结贴吧
老十二 2018-06-02
  • 打赏
  • 举报
回复
引用 4 楼 sinat_28984567 的回复:
楼主家return是想干什么?
有点自以为是,程序执行到了 ELSE return就是 输入不正确 然后弹出 如果不执行else return 就是个摆设
老十二 2018-06-02
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
ALTER PROC [dbo].[infotrans]
        @cp VARCHAR(20), 
        @cd VARCHAR(20)
AS 
BEGIN
	--1.
	IF  1=ISNUMERIC(@cp)
		INSERT INTO temp1(cperson_id) VALUES(@cp)
	ELSE
		PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cp)
	--2.	 
	IF  1=ISNUMERIC(@cd)
		UPDATE temp1 SET cdept_id=@cd      WHERE cperson_id=@cp
	ELSE
		PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cd)
END
GO
刚学MSSQL 半个月 随便写了个 错误挺低级
二月十六 版主 2018-06-02
  • 打赏
  • 举报
回复
楼主家return是想干什么?
RINK_1 2018-06-01
  • 打赏
  • 举报
回复
一旦执行了Return,就终止执行并退出存储过程了。
吉普赛的歌 2018-06-01
  • 打赏
  • 举报
回复
ALTER PROC [dbo].[infotrans]
        @cp VARCHAR(20), 
        @cd VARCHAR(20)
AS 
BEGIN
	--1.
	IF  1=ISNUMERIC(@cp)
		INSERT INTO temp1(cperson_id) VALUES(@cp)
	ELSE
		PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cp)
	--2.	 
	IF  1=ISNUMERIC(@cd)
		UPDATE temp1 SET cdept_id=@cd      WHERE cperson_id=@cp
	ELSE
		PRINT 'invalid input value:'+CONVERT(VARCHAR(20),@cd)
END
GO
吉普赛的歌 2018-06-01
  • 打赏
  • 举报
回复


不要随便写 Return , return 代表结束。

34,590

社区成员

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

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