当前位置: 代码迷 >> Oracle开发 >> 初学者请问一个plsql写法
  详细解决方案

初学者请问一个plsql写法

热度:27   发布时间:2016-04-24 07:06:33.0
菜鸟请教一个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 ;
  相关解决方案