--匯入銷售任務
declare
v_billno varchar2(40);
v_x number;
v_j varchar2(40);
v_begin varchar2(40);
v_end varchar2(40);
v_sql varchar2(4000);
v_je number;
begin
--回圈取臨時表
for rec in (select *
from t_ct_xsrw) loop
v_billno := f_get_serial('RSL', null);
--開始插入
insert into t_md_sale_task_resolve_h
(resolveno, compid, busno, task_year, sale_amount, gross_amount, lastmodify, lasttime, status, execdate, checker1,
checkbit1, createuser, createtime, checkdate1, notes, checkbit2, checkbit3, checkbit4, checkbit5)
select v_billno, 1, rec.busno, 2021,
rec.a1 + rec.a2 + rec.a3 + rec.a4 + rec.a5 + rec.a6 + rec.a7 + rec.a8 + rec.a9 + rec.a10 + rec.a11 +
rec.a12, 0, 168, sysdate, 0, null, null, 0, 168, sysdate, sysdate, '匯入', 0, 0, 0, 0
from dual;
--12月份回圈開始
v_x := 0;
while v_x <= 11 loop
v_x := v_x + 1;
--存特殊格式變數
select 'rec.a' || to_char(v_x)
into v_j
from dual;
v_sql:='select ' ||v_j||' from dual';
dbms_output.put_line(v_sql);
execute immediate v_sql into v_je ;
--本月第一天
SELECT TO_CHAR(TRUNC(to_date('2021-' || to_char(v_x, '00') || '-15', 'YYYY-MM-DD'), 'MM'), 'YYYY-MM-DD')
into v_begin
FROM DUAL;
--本月最后一天 SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYY-MM-DD') "本月最后一天" FROM DUAL;
SELECT TO_CHAR(LAST_DAY(to_date('2021-' || to_char(v_x, '00') || '-15', 'YYYY-MM-DD')), 'YYYY-MM-DD')
into v_end
FROM DUAL;
dbms_output.put_line(v_j || ',' || rec.a1);
--插入明細表
v_sql := 'insert into t_md_sale_task_resolve_d (resolveno, rowno, task_year, task_month, sale_amount, gross_amount, startdate, enddate)' ||
' select ''' || v_billno || ''', ' || v_x || ', 2021,' || v_x || ',round(' || v_je || ',2) ' ||
', 0, to_date(''' || v_begin || ''', ''yyyy-mm-dd''), to_date(''' || v_end ||
''', ''yyyy-mm-dd'') from dual';
--輸出變數v_sql
dbms_output.put_line(rec.a1);
dbms_output.put_line(v_sql);
execute immediate v_sql ;
commit;
end loop;
end loop;
end;
第一段 execute immediate v_sql into v_je 報錯 ,ORA-00904: "REC"."A1": 識別符號無效
ORA-06512: 在 line 35。
不明白為什么會報錯 。
執行陳述句 :select a1 from t_ct_mdrw 沒問題啊 ;
求大神指點如何解。這種動態欄位的應用
uj5u.com熱心網友回復:
附建表陳述句:-- Create table
create table T_CT_XSRW
(
業務機構 VARCHAR2(255),
a1 NUMBER,
a2 NUMBER,
a3 NUMBER,
a4 NUMBER,
a5 NUMBER,
a6 NUMBER,
a7 NUMBER,
a8 NUMBER,
a9 NUMBER,
a10 NUMBER,
a11 NUMBER,
a12 NUMBER
)
tablespace H2_BUSI
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/260426.html
標籤:基礎和管理
