oracle 存储过程 报 无效字符

create or replace procedure insert_MQdetail_table is

  -------------------指定数据生成只需修改以下条件-----------------------------
  --定义数据生成时间范围
  /*start_date varchar2(100):='20150501';
  end_date varchar2(100):='20150603';*/
  --查询需要生成数据的指标记录 in ('GW0073','GW0074','GW0022','GW0075','GW0036','GW0040')
  cursor gdata_dict is(select t.id,t.today_sql from zyhipsys.monitor_quota_info t);
  -----------------------------------------------------------------------------

  --变量声明
  vsql varchar2(2000);--sql语句
  vsid varchar2(200);--info id
  vsCoutn varchar2(4000);--最新的数目
  vsCoutnTemp varchar2(4000);--临时的数目
  vaNewDetailId varchar2(200);--要插入的新的主键

begin
  --循环指标配置表记录
  for vvv in gdata_dict loop
      begin
        vsql:=vvv.today_sql;
        vsid:=vvv.id;
        begin
           execute immediate vsql into vsCoutn;--根据配好的sql语句查询当日的数目
        end;
        if vsql is not null then
            execute immediate 'select count(*) from zyhipsys.monitor_quota_detail t where  t.insert_time >= trunc(sysdate)
            and t.insert_time < trunc(sysdate + 1) and t.info_id=:1' into vsCoutnTemp using vsid;
        end if;
        if vsCoutnTemp=0 then
          --执行插入
            execute immediate 'select monitor_quota_detail_seq.nextval from dual' into vaNewDetailId;
            execute immediate 'insert into zyhipsys.monitor_quota_detail t (t.id,t.info_id,t.quota_value,t.insert_time,t.valid_flag)
                               values(:1,:2,:3,sysdate,1)' using  vaNewDetailId,vsid,vsCoutn;

        else
          --执行更新
            execute immediate 'update zyhipsys.monitor_quota_detail t set t.quota_value=:1  where  t.insert_time >= trunc(sysdate)
            and t.insert_time < trunc(sysdate + 1)  and t.info_id=:2 ' using  vsCoutn,vsid;
        end if;
      end;
      end loop;
end insert_MQdetail_table;


原因是因为 在execute immediate vsql into vsCoutn  这边根据语句查询的时候得到数目的时候 加了 ;

;号和/都是执行的含义,如果使用了/就不需要使用分号了。
如果是执行存储过程则必须使用/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

white......

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值