各位大虾请教一下,想把存储过程中传入的变量用在select中用做一个字段,该怎么写

student7007 2004-11-29 01:46:02
各位大虾请教一下,想把存储过程中传入的变量当做字段名,该怎么写
create or replace procedure dqzj_dfxx(

ac_ny in varchar2,
ac_qf in varchar2,

) is
n_abc number;

begin
insert into n_abc
select ac_qf from qfb1 where ny=ac_ny ----这里ac_qf就是想做为字段名来用,字段为number型

end;
...全文
143 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
student7007 2004-11-30
  • 打赏
  • 举报
回复
还没有彻底解决呀,那位再看一下哦,我这样为什么不更新,写法有问题吗
declare
ac_qfny varchar2(10):='qf10';
ac_dw varchar2(4):='C1'
begin

execute immediate 'update jczj_c_dfxx a set ysdf= (select '||ac_qfny ||'
from dq.dfsqf b where a.hh=b.hh) where dw='||ac_dw;

end;

/
student7007 2004-11-29
  • 打赏
  • 举报
回复
哦,我发现了,上面那个不能执行的,因为qf10中可能有空值,所以不让改,那再请教一句怎么把空值赋成0,这样我试了不行
update jczj_c_dfxx a set ysdf= (select '||nvl(ac_qfny,0)||' from dq.dfsqf b where a.hh=b.hh);
student7007 2004-11-29
  • 打赏
  • 举报
回复
这样可以成功执行啊
declare
ac_qfny varchar2(10):='qf10';
begin

update jczj_c_dfxx a set ysdf= (select '||ac_qfny||' from dq.dfsqf b where a.hh=b.hh);

end;
/
GerryYang 2004-11-29
  • 打赏
  • 举报
回复
你先执行update jczj_c_dfxx a set ysdf= (select '||ac_qfny||' from dq.dfsqf b where a.hh=b.hh)有没有更新.
student7007 2004-11-29
  • 打赏
  • 举报
回复
我这样写了为什么更新不了啊
create or replace procedure dqzj_dfxx(
ac_qfny in varchar2
}is
begin
execute immediate 'update jczj_c_dfxx a set ysdf= (select '||ac_qfny||' from dq.dfsqf b where a.hh=b.hh)' ;
end;
student7007 2004-11-29
  • 打赏
  • 举报
回复
为什么这句不能执行呢,应该怎么写
execute immediate 'update jczj_c_dfxx a set ysdf= (select qf10 from dq.dfsqf b where a.hh=b.hh)' ;
CodeMagic 2004-11-29
  • 打赏
  • 举报
回复
str:='insert into table1(a,b,c) select ''a'',''b'',''c'' from dual';
student7007 2004-11-29
  • 打赏
  • 举报
回复
str中要写一个常量,怎么写呢?str:='insert into table1(a,b,c) select 'a','b','c' from dual,为什么不执行
phant0m 2004-11-29
  • 打赏
  • 举报
回复
create or replace procedure dqzj_dfxx(ac_ny in varchar2,ac_qf in varchar2) is
n_abc number;
str varchar2(200);
begin
str:='insert into n_abc select'||ac_ny ||' from qfb1 where ny='||ac_qf ;
execute immediate str;
end;
CodeMagic 2004-11-29
  • 打赏
  • 举报
回复
create or replace procedure dqzj_dfxx(ac_ny in varchar2,ac_qf in varchar2) is
n_abc number;
str varchar2(200);
begin
str:='insert into n_abc select :1 from qfb1 where ny=:2';
execute immediate str using ac_qf,ac_ny;
end;
qiaozhiwei 2004-11-29
  • 打赏
  • 举报
回复
用动态sql

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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