选择列或if语句

问题描述:

我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" 

我怎样才能使一个查询或存储过程看上述情况。 。

感谢&问候..

使用单=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

下面是创建存储过程的一个例子,也许你需要有只有一个参数,表示你有什么做

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

尝试此

表: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 

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