我有一個包含數字的列的臨時表。 我想使用臨時表中的列並將它們與IF語句進行比較。來自臨時表的IF語句
...
INSERT INTO #tmp
EXEC [p_GetComplete] @Car_ID
IF Col1 + Col2 = Col3
BEGIN
PRINT 'OK'
END
ELSE
BEGIN
PRINT 'NO'
END
...
我有一個包含數字的列的臨時表。 我想使用臨時表中的列並將它們與IF語句進行比較。來自臨時表的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是否以及何時,只要你可以:
你可以這樣來做(推薦):
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
你可以使用case語句,當想要插入不同的值到#tmp表時,按照so我的條件。
如:
SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported
如果您想尋找每一條記錄,並做一些印刷,有很好的例子上: http://technet.microsoft.com/en-us/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'
。
我認爲如果你在數據庫中做IF,你會做錯事情...... SQL是一種基於集合的語言,你的程序邏輯應該在你的應用程序中而不是你的存儲器中。 – Liath
您必須選擇這些值,是否始終只有一行,如果不是,您是否希望爲匹配條件的每一行執行一個操作?如果是這樣的行動? –
@AlexK。是的,總會只有一行。 – TheUser