菜鸟请教一个plsql写法

batman1983 2013-03-11 10:24:11
现在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 这个字符串呢?
...全文
536 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
batman1983 2013-03-11
  • 打赏
  • 举报
回复
引用 2 楼 quanhj 的回复:
SQL code ? 123456789101112131415 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? 上面举得例子里,只有一个字段,其实实际中有好几个字段呢! 只能这样?
quanhj 2013-03-11
  • 打赏
  • 举报
回复
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 ;
quanhj 2013-03-11
  • 打赏
  • 举报
回复
declare
  li_num number(1);
begin 
  if li_num =1 then 
    update emp set job ='';
  else if li_num=2 then   
    update emp set mgr='';
  else if li_num = 3 then 
    update emp set sal =100;
  end if ;
    end if ;
 end if ;
end ;
batman1983 2013-03-11
  • 打赏
  • 举报
回复
引用 5 楼 fengnx 的回复:
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 ……
就是这个,多谢。
fengnx 2013-03-11
  • 打赏
  • 举报
回复
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 ;
quanhj 2013-03-11
  • 打赏
  • 举报
回复
要不 你也把字段弄成变量。然后做一个状态与字段变量的关联。反正都差不多。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧