2011-11-04 85 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