Sql 来自临时表的IF语句

Sql 来自临时表的IF语句,sql,sql-server,Sql,Sql Server,我有一个临时表,其中有些列包含数字。 我想使用temp表中的列,并将它们与IF语句进行比较 ... INSERT INTO #tmp EXEC [p_GetComplete] @Car_ID IF Col1 + Col2 = Col3 BEGIN PRINT 'OK' END ELSE BEGIN PRINT 'NO' END ... SQL是在集合上运行的,所以尽可能避免以下情况: 您可以这样做(推荐): 或者这样: SELECT CASE WHEN Col1+Col2=Col

我有一个临时表,其中有些列包含数字。 我想使用temp表中的列,并将它们与IF语句进行比较

...


INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID

IF Col1 + Col2 = Col3
BEGIN
 PRINT 'OK'
END
ELSE 
BEGIN
 PRINT 'NO'
END

...

SQL是在集合上运行的,所以尽可能避免以下情况:

您可以这样做(推荐):

或者这样:

SELECT CASE WHEN Col1+Col2=Col3 THEN 'Ok' ELSE NO FROM #tmp WHERE 

当需要根据某些条件向#tmp表插入不同的值时,可以使用case语句

例如:

如果要搜索每条记录并进行打印,以下是一个很好的示例:


祝你好运

据推测,
exec
只返回一行,而捕获数据的唯一方法是将数据放入表中。您可以重写存储过程以获得适当的
输出
参数,但我们假设这是不可能的

你可以做你想做的事情:

INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID

IF exists(select * from #temp where Col1 + Col2 = Col3)
BEGIN
 PRINT 'OK';
END
ELSE 
BEGIN
 PRINT 'NO';
END;

也就是说,如果存在条件为真的行,那么在我看来,如果您在数据库中执行IFs,那么请打印“确定”

。。。SQL是一种基于集合的语言,您的过程逻辑应该在应用程序中,而不是存储中。您必须选择值,是否始终只有一行,如果不是,是否要对符合条件的每一行执行操作?如果是这样,什么行动?@AlexK。是的,始终只有一行。
INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID

IF exists(select * from #temp where Col1 + Col2 = Col3)
BEGIN
 PRINT 'OK';
END
ELSE 
BEGIN
 PRINT 'NO';
END;