我是初学者,并试图了解我们在那里做了什么。在" RETURN"之后我什么也看不见。是否有隐藏的ELSE设置值?
SET @Context_Info = dbo.fnGetCustomerID(@CustomerGroup)
IF EXISTS (SELECT * FROM sys.dm_exec_requests WHERE context_info = @Context_Info AND session_id != @@SPID)
BEGIN
RETURN
END
SET context_info @Context_Info
select * from customer;
select * from products;
答案 0 :(得分:0)
此处没有隐藏的其他内容,如果以下IF
条件返回true,则脚本光标将返回到原始调用者。
IF EXISTS (SELECT * FROM sys.dm_exec_requests WHERE context_info = @Context_Info AND session_id != @@SPID)
如果IF
条件返回false,即没有给定SELECT
的记录,则只会将context_info
设置为指定的变量。
像编程世界中的任何IF
条件工作流一样对待脚本。
答案 1 :(得分:0)
在SQL中,如果在代码中的某处指定了RETURN,则不会执行该RETURN之后的代码
所以这里意味着如果你的If语句中的条件满足,那么在这之下没有别的东西不会执行。
如果没有与if语句匹配的行,则要求执行最后一行: 以上也可以这样写出
SET @Context_Info = dbo.fnGetCustomerID(@CustomerGroup)
IF NOT EXISTS (SELECT * FROM sys.dm_exec_requests
WHERE context_info = @Context_Info AND session_id != @@SPID)
BEGIN
SET context_info @Context_Info
END