使用存储过程(或函数)作为IF语句中的条件的最佳方法是什么?
允许我做一些与此接近的事情,声明了一个过程/函数'CheckCondition',它返回带有CAST或输出的真/假1/0值
IF CheckCondition 1, 'asfa'
BEGIN
//do something
ELSE
//do something else
END
函数/过程不需要INSERT或UPDATE,只需要SELECT,所以我猜一个函数会这样做。
由于
答案 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
谢谢大家!