+ -
当前位置:首页 → 问答吧 → 如何使用游标值作为字段名称使用?具体如何写?

如何使用游标值作为字段名称使用?具体如何写?

时间:2011-12-07

来源:互联网

如何使用游标值作为字段名称使用?
现有一个存储过程,需求:从test1中取所有表字段,然后再计算每个字段=25的总记录数,把结果写入表:

create or replace procedure pro_2k1w_zd is
num1 number(10);cursor sum_fee1 is
  select cname from col where lower(tname)='test1';
  begin
  delete from temp_ke;
  for feesum in sum_fee1
  loop
  num1 :=1;
  select count(*) into num1 FROM test1 where feesum.CNAME = '25' ;
  insert into temp_ke (zdm,zdnum) values (feesum.CNAME,num1);
  end loop;
end pro_2k1w_zd;  

目前问题是:select count(*) into num1 FROM test1 where feesum.CNAME = '25' ; 这句没执行,应该是其中的
feesum.CNAME = '25' 写法不对,请教各位这句如何写,就是使用游标的值作为字段来使用,谢谢了!

作者: dxbjeremy   发布时间: 2011-12-07

把该存储过程中所用到各个表描述清楚。
每个表要描述表名、列名、类型.

作者: LuiseRADL   发布时间: 2011-12-07

table test1 两个字段如下
id number
old number

现在我想计算每个字段中值为25的记录数,然后把结果:字段名,总数写到表
temp_ke 中,temp_ke字段为
zdm varchar(10)
zdnum number

作者: dxbjeremy   发布时间: 2011-12-07

执行动态sql文就可以了
Execute 'insert into temp_ke (zdm,zdnum) values ('''|| feesum.CNAME ||''','|| num1 ||');'

作者: townsin   发布时间: 2011-12-07

insert into temp_ke (zdm,zdnum) values (feesum.CNAME,num1);
这句没问题,有问题的是:
select count(*) into num1 FROM test1 where feesum.CNAME = '25' ;

这句,这句用到了游标的值作为字段使用

作者: dxbjeremy   发布时间: 2011-12-07

没说清楚,我就是举个例子
Execute 'select count(*) into :num1 FROM test1 where '|| feesum.CNAME || '= ''25''' using num1;
具体语法还真忘了,你找找吧

作者: townsin   发布时间: 2011-12-07