merhabalar,
burada oracle'cıların olduğunu biliyorum :) umarım görürsünüz.
aşağıdaki gibi bi tane object tanımım var ve object'ye bağlı bi type oluşturuluyor. bu type tipindeki row loop içerisinde dolduruyor. fakat bunu dmbs_output ile ekrana yazdırmaya çalışırjen ORA-06502 hatası alıyorum. nerede yanlış yaptığımı bilen varsa söylerse çok makbule geçer?
CREATE OR REPLACE TYPE TYP_OCC AS OBJECT(
OCC_ID INTEGER,
SEQ_NO INTEGER,
OCC_REMARK VARCHAR2(50),
OCC_AMOUNT FLOAT );
CREATE OR REPLACE TYPE TYP_OCC_TABLE AS TABLE OF TYP_OCC;
v_occ_row := typ_occ_table();
v_inx :=1;
for içerisinde dolduruluyor.
v_occ_row.EXTEND;
v_occ_row(v_inx) := eu_bill.typ_occ(rec.occ_id, v_promo_inx, v_occ_remark, v_amount);
v_inx := v_inx + 1;
end loop;
bunu işlemler bitince kodun son kısmında dbms_output ile aşağıdaki gibi yazdırmaya çalışıyorum.
i:=1;
FOR i IN v_occ_row.FIRST .. v_occ_row.LAST
LOOP
dbms_output.put_line('PROMO');
dbms_output.put_line( i );
DBMS_OUTPUT.put_line (v_occ_row(i).OCC_ID || ' - ' || v_occ_row(i).SEQ_NO || ' - ' || v_promo_occ_row(i).OCC_REMARK || ' - ' || v_promo_occ_row(i).OCC_AMOUNT);
END LOOP;
burada oracle'cıların olduğunu biliyorum :) umarım görürsünüz.
aşağıdaki gibi bi tane object tanımım var ve object'ye bağlı bi type oluşturuluyor. bu type tipindeki row loop içerisinde dolduruyor. fakat bunu dmbs_output ile ekrana yazdırmaya çalışırjen ORA-06502 hatası alıyorum. nerede yanlış yaptığımı bilen varsa söylerse çok makbule geçer?
CREATE OR REPLACE TYPE TYP_OCC AS OBJECT(
OCC_ID INTEGER,
SEQ_NO INTEGER,
OCC_REMARK VARCHAR2(50),
OCC_AMOUNT FLOAT );
CREATE OR REPLACE TYPE TYP_OCC_TABLE AS TABLE OF TYP_OCC;
v_occ_row := typ_occ_table();
v_inx :=1;
for içerisinde dolduruluyor.
v_occ_row.EXTEND;
v_occ_row(v_inx) := eu_bill.typ_occ(rec.occ_id, v_promo_inx, v_occ_remark, v_amount);
v_inx := v_inx + 1;
end loop;
bunu işlemler bitince kodun son kısmında dbms_output ile aşağıdaki gibi yazdırmaya çalışıyorum.
i:=1;
FOR i IN v_occ_row.FIRST .. v_occ_row.LAST
LOOP
dbms_output.put_line('PROMO');
dbms_output.put_line( i );
DBMS_OUTPUT.put_line (v_occ_row(i).OCC_ID || ' - ' || v_occ_row(i).SEQ_NO || ' - ' || v_promo_occ_row(i).OCC_REMARK || ' - ' || v_promo_occ_row(i).OCC_AMOUNT);
END LOOP;
OCC_REMARK'a 50 karakter uzunluk vermişsin oraya daha uzun bir değer gelebiliyor olabilir mi?
DBMS_OUTPUT.PUT_LINE fonksiyonunda da verilerin bir kısmını V_OCC_ROW(i)'den, bir kısmını da V_PROMO_OCC_ROW(i)'den çekmişsin ama yukarıda promo diye bir tip göremedim. Prosedür içinde başka bir alan mı var yoksa yanlış mı o kısım?
chicha
1