在SQL Server 2012中,如果我在"返回"之后没有指定任何内容,这意味着什么?

时间:2017-12-16 06:39:43

标签: sql-server

我是初学者,并试图了解我们在那里做了什么。在" 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;

2 个答案:

答案 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