存储过程作为IF条件布尔表达式返回

时间:2017-07-10 14:40:08

标签: sql-server tsql

使用存储过程(或函数)作为IF语句中的条件的最佳方法是什么?

允许我做一些与此接近的事情,声明了一个过程/函数'CheckCondition',它返回带有CAST或输出的真/假1/0值

IF CheckCondition 1, 'asfa' 
BEGIN
    //do something
ELSE
    //do something else
END

函数/过程不需要INSERT或UPDATE,只需要SELECT,所以我猜一个函数会这样做。

由于

2 个答案:

答案 0 :(得分:0)

存储Proc,输出参数为解决方案;

create proc dbo.Condition

@Result bit output

as

set nocount on

set @Result=0 -- assumes false . . .

if 1=1 -- i.e. this is TRUE
    begin
        set @Result=1
    end
go
declare @Result bit

exec dbo.Condition
    @Result=@Result output

print @Result -- here's the result

上面的例子创建了一个proc,而buttom的位是如何执行它并得到结果

答案 1 :(得分:0)

从评论中,最后做了这样的事情,用函数代替程序:

CREATE FUNCTION [dbo].[CheckCondition]
(
    @Parameter1 int = 0,
    @Parameter2 NVARCHAR(MAX) = 0,
)
RETURNS bit
AS
BEGIN   
    IF ( boolean expression with selects )          
        RETURN CAST(1 AS bit)
    ELSE
        RETURN CAST(0 AS bit)
    RETURN CAST(0 AS bit)
END

像这样使用:

IF dbo.CheckCondition(@param1, 'sdasf') = 1
     //Do something
ELSE
     //Do something else

谢谢大家!