日期:2014-05-17  浏览次数:20727 次

菜鸟请教一个plsql写法
现在plsql中,有一个变量有三种状态,并且每一个状态都会更新同一张表。
但是每次的更新字段不同。该如何用一个sql语句来完成?
STRSQL = 'UPDATE '
STRSQL = STRSQL  'UPDATE TABLE'
STRSQL = STRSQL  'SET '
if 状态1 then
STRSQL = STRSQL  状态1= 状态1'
end if
if 状态2 then
STRSQL = STRSQL  状态2= 状态2'
end if
if 状态3 then
STRSQL = STRSQL  状态3= 状态3'
end if
是像这样拼接吗?拼接好之后,该如何执行STRSQL 这个字符串呢?

------解决方案--------------------
declare
  li_num number(1);
  ls_sql varchar2(2000);
begin 
  if li_num =1 then 
    ls_sql=' update emp set job =''1''' ;
  else if li_num=2 then   
  ls_sql=' update emp set  ename =''1''' ;
  else if li_num = 3 then 
      ls_sql=' update emp set sal=1 ' ;
  end if ;
    end if ;
 end if ;
 execute immediate ls_sql ;
end ;


 
------解决方案--------------------
lz是这个意思吧?
declare
  li_num number(1);
  ls_sql varchar2(2000);
begin 
  ls_sql := 'update emp ';
  if 1 = 1 then 
    ls_sql:= ls_sql 
------解决方案--------------------
 ' set job =''1'' ' ;
  end if;
  if 2 = 2 then   
    ls_sql:=ls_sql 
------解决方案--------------------
 '  ename =''1'' ' ;
  end if;    
  if 3 = 3 then 
      ls_sql:=ls_sql 
------解决方案--------------------
 '  set sal=1 ' ;
  end if ;
 execute immediate ls_sql ;
end ;