存储过程返回为 IF 条件布尔表达式
Posted
技术标签:
【中文标题】存储过程返回为 IF 条件布尔表达式【英文标题】:Stored procedure return as IF condition boolean expression 【发布时间】:2017-07-10 14:40:08 【问题描述】:在 IF 语句中使用存储过程(或函数)返回作为条件的最佳方法是什么?
可以让我做一些接近此的事情,声明了一个过程/函数“CheckCondition”,它使用 CAST 或作为输出返回真/假 1/0 值
IF CheckCondition 1, 'asfa'
BEGIN
//do something
ELSE
//do something else
END
函数/过程不需要做 INSERT 或 UPDATE,只需要 SELECT,所以我猜一个函数会做。
谢谢
【问题讨论】:
有关如何为此使用存储过程,请参阅此答案:***.com/a/11965764/1220550。然而,用户定义的函数可能更直观:IF fn_CheckCondition(1, 'asfa') = 1 BEGIN ...
请注意,在 T-SQL 中,布尔变量不存在,因此您必须使用 BIT 或 INT。
@PeterB 函数声明中有什么特别之处吗?它如何返回值? return 1
可以吗?
我建议使用 BIT 数据类型并返回 0 或 1 ...
是的,请看这里:***.com/q/17028961/1220550
【参考方案1】:
带有输出参数的存储过程是一个解决方案;
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,底部是如何执行它并得到结果
【讨论】:
【参考方案2】:来自cmets,终于做到了,用函数而不是过程:
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
谢谢大家!
【讨论】:
以上是关于存储过程返回为 IF 条件布尔表达式的主要内容,如果未能解决你的问题,请参考以下文章
oracle 存储过程通过输入条件查询,返回多条记录和记录数。
[终章]进阶20-流程控制结构--if/case/while结构 - 三个while的存储过程案例(批量生成表单数据) - 随机长度的随机字符串的存储过程案例