2011-11-04 66 views
1

我寫過一個包含存儲過程和REF遊標的包。我現在能夠通過這個光標顯示我表格中的所有列。我希望能夠插入一個循環,如果滿足某些條件,七列中的四列將顯示四個星號,其餘列將顯示其正常數據。隱藏特定列上的輸出

例如,我有一個名爲國家的專欄。任何時候美國出現在記錄中,(empid,ss,地址,部門)的四列將只需要顯示****,而其餘列將正常顯示。如果一個非美國的國家在記錄中,那麼所有的欄目都會顯示數據正常。我知道有一個noprint功能,但我似乎無法弄清楚如何顯示星號。

回答

5

而不是使用複雜的東西這個的,只是用一種CASE表達:

SELECT CASE WHEN Country = 'USA' THEN '*****' Else EmpID END as EmpID

+1

+1,始終做到在SQL首先,如果可能的話。如果你不能這樣做,*然後*看看程序選項。 – DCookie

+0

謝謝。我需要使用存儲過程從應用程序中取消直接表訪問。有沒有一種方法可以在光標上使用這種CASE表達式?我試圖進入它,但我得到一些錯誤。 – Christopher

+0

爲什麼不使用'VIEW'而不是'CURSOR'?無論如何,只要把'CASE'放在你的'SELECT'中(光標或其他地方) – JNK