簡體   English   中英

臨時表中的IF語句

[英]IF statement from a temp table

我有一個臨時表,其中某些列包含數字。 我想使用臨時表中的列,並將它們與IF語句進行比較。

...


INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID

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

...

使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 

根據某些條件,當要將不同的值插入#tmp表時,可以使用case語句。

如:

SQL Server:CASE WHEN OR THEN ELSE END =>不支持OR

如果要搜索每條記錄並進行一些打印,請參見以下示例: http : //technet.microsoft.com/zh-cn/library/ms180152.aspx

祝好運!!!

大概是, 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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM