来自临时表的IF语句

时间:2014-01-29 11:57:02

标签: sql sql-server

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

...


INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID

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

...

3 个答案:

答案 0 :(得分:1)

SQL是在SET上运行的,所以只要你能这样做就可以使用CASE WHEN和IF:

你可以这样做(推荐):

SELECT 'Ok' FROM #tmp WHERE Col1+Col2=Col3
UNION ALL
SELECT 'NO' FROM #tmp WHERE NOT (Col1+Col2=Col3)

或者这样:

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

答案 1 :(得分:0)

根据某些条件,您可以在想要向#tmp表插入不同值时使用case语句。

例如:

SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

如果您想搜索每条记录并进行一些打印,那么就有一个很好的例子: http://technet.microsoft.com/en-us/library/ms180152.aspx

祝你好运!!!

答案 2 :(得分:0)

据推测,exec只返回一行,唯一可以捕获数据的方法是进入表格。您可以重写存储过程以获得正确的OUTPUT参数,但我们假设这是不可能的。

你可以做你想做的事:

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;

也就是说,如果条件为真的行存在,则打印'OK'