我有一个临时表,其中包含一些包含数字的列。 我想使用临时表中的列,并将它们与IF语句进行比较。
...
INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID
IF Col1 + Col2 = Col3
BEGIN
PRINT 'OK'
END
ELSE
BEGIN
PRINT 'NO'
END
...
答案 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'
。