2013-02-12 109 views
0

我wan't根據具體的情況來顯示的列/參數 我要的是選擇列或if語句

if(@SelectFlag==true) 
    select name,Address,salary,CreatedBy from employee 
else (@UpdateFlag==true) 
    select name,Address,salary from employee  
    -- in this case i don't require the column "CreatedBy" 

我怎樣才能使一個查詢或存儲過程看上述情況。 。

感謝&問候..

回答

0

使用單=1代替true

if @SelectFlag = 1 
    select name, Address, salary, CreatedBy from employee 
else 
if @UpdateFlag = 1 
    select name, Address, salary from employee  
+0

你,這就是我需要什麼..感謝Mikael .. – vstsdev 2013-02-12 07:01:17

0

下面是創建存儲過程的一個例子,也許你需要有隻有一個參數,表示你有什麼做

CREATE PROCEDURE procedurenameHere(@EventFlag INTEGER) 
AS 
    -- @EventFlag 
    -- 1 for SELECT 
    -- 2 for UPDATE 
    IF @EventFlag = 1 
     SELECT name,Address,salary,CreatedBy 
     FROM employee 
    ELSE IF @EventFlag = 2 
     SELECT name,Address,salary, NULL AS CreatedBy 
     FROM employee 
GO 

執行:

EXEC procedurenameHere 1 
+0

請傳遞兩個參數到你的過程,否則會拋出錯誤'@ SelectFlag'和'@ UpdateFlag'是不確定的 – asifsid88 2013-02-12 06:51:58

0

嘗試此

表:EMP
列:姓名,地址,工資,creditedBy

declare My_Block 
    p_select_flag emp.SelectFlag%type; 
    p_updateFlag emp.UpdateFlag%type; 
BEGIN 
    select selectFlag into p_select_flag from emp where name='ASIF'; 
    select update into p_updateFlag from emp where name='ASIF'; 

IF p_select_flag = 'TRUE' THEN 
    select name,Address,salary,CreatedBy from employee; 
ELSIF UpdateFlag = 'TRUE' then 
    select name,Address,salary from employee; 
END IF; 

END My_Block 
0

U可以與參數的SP內打電話,並通過一個參數作爲FLAG作爲整型:

使用single =和1,2而不是true。

1指示SELECT和2指示UPDATE

if @FLAG = 1 
    select name, Address, salary, CreatedBy from employee 
else 
if @FLAG = 2 
    select name, Address, salary from employee