|
|
|||||||||
|
|||||||||
| |||||||||
|
|
|
| |||||||||
![]() |
|
|
«
Previous Thread
|
Next Thread
»
|
Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
Get inside! Sample the range of functionality easily built with JMSL Library for Time Series Data Analysis, Heat Maps, Portfolio Optimization, Monte Carlo Simulation, Stock Price Charting and more. Download Now! |
|
#1
|
|||
|
|||
|
I'm attempting to write a cursor that will read data from a table, reformat the data and insert it into another table. I have an existing SQL script that contains a cursor. When I copy the same cursor into my script it doesn't work. I get an error message of ORA-06512: at line 188. Line 188 contains the following "FETCH varial_fib into" I don't know where my problem is since both of the cursors contained are identical.
Here's a copy of portions of my script: (the entire script is attached to this thread) SET NEWPAGE 0 SET SPACE 0 SET LINESIZE 80 SET PAGESIZE 0 SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF DECLARE applik_kz CHAR(2) := 'XX'; firmennummer CHAR(3) := '001'; buchungsperiode CHAR(6) := '000000'; erfassungsdatum CHAR(6) := '000000'; erfassungsnummer CHAR(6) := '000001'; laufende_nr CHAR(5) := '00000'; transakt_nr CHAR(5) := '00000'; (cont...) cursor varial_fib IS select LPAD(NVL(TO_CHAR(buch_jahr,'FM99999'),'0'),4,'0') || -- buch_periode LPAD(NVL(TO_CHAR(buch_monat,'FM999'),'0'),2,'0'), (cont...) from "MOSCA"."PFIB" where pfib.BELEGART = 'LAG' ; BEGIN OPEN varial_fib; LOOP FETCH varial_fib into buchungsperiode, erfassungsdatum, konto_sa, (cont...) EXIT when varial_fib%NOTFOUND; schreib_string := applik_kz || firmennummer || buchungsperiode || ; (cont...) insert into w100.varial_fibu values (schreib_string,'N',belegnummer, substr(konto_nr,2,8),substr(gegenkonto_nr,2,8),zahlungs_kond_nr, kst_ktr1_nr,bs_bezeichnung); commit; END LOOP; update w100.pfib set gebucht = 'J' where beleg_nr = nr_merker and buchungs_pos_nr = pos_merker; commit; END LOOP; CLOSE varial_fib; END; / |
|
#2
|
|||
|
|||
|
Using a cursor is just a waste in this case. You can do this directly with an insert statement.
Code:
insert into t1 (c1,c2) select expression,expression from t2 where <searchCondition> |
|
#3
|
|||
|
|||
|
Problem with INTO list and SELECT statement
I've managed to widdle down my problem to being a mismatch between the SELECT statement of the cursor and the INTO list of the FETCH statment of the cursor.
I've been looking through the two lists and cannot pinpoint the record ( or lack of) that is causing the problem. All I know is that the 2 lists are not the same and the script will not run. Below the cursor part of my script that is causing the problem: select LPAD(NVL(TO_CHAR(buch_jahr,'FM99999'),'0'),4,'0') || -- buch_periode LPAD(NVL(TO_CHAR(buch_monat,'FM999'),'0'),2,'0'), LPAD(NVL(TO_CHAR(erstell_jahrzehnt,'FM999'),'0'),2,'0') || -- erfassungsdatum LPAD(NVL(TO_CHAR(erstell_monat,'FM999'),'0'),2,'0') || LPAD(NVL(TO_CHAR(erstell_tag,'FM999'),'0'),2,'0'), NVL(kontenart,' '), -- konto_sa LPAD(TO_CHAR(TO_NUMBER(konten_nr)),8,'0'), -- konto_nr LPAD(TO_CHAR(TO_NUMBER(konten_nr)),8,'0'), -- erl_kto NVL(gegenkonto_kontenart,' '), -- gegenkonto_sa LPAD(NVL(TO_CHAR(TO_NUMBER(gegenkonto),'FM999999999'),'0'),8,'0'), -- gegenkonto_nr LPAD(NVL(TO_CHAR(beleg_nr,'FM99999999999'),'0'),11,'0'), -- belegnummer LPAD(NVL(TO_CHAR(rechnungs_jahrzehnt,'FM999'),'0'),2,'0') || -- beleg_datum LPAD(NVL(TO_CHAR(rechnungs_monat,'FM999'),'0'),2,'0') || LPAD(NVL(TO_CHAR(rechnungs_tag,'FM999'),'0'),2,'0'), LPAD(NVL(TO_CHAR(valuta_jahrzehnt,'FM999'),'0'),2,'0') || -- valut_datum LPAD(NVL(TO_CHAR(valuta_monat,'FM999'),'0'),2,'0') || LPAD(NVL(TO_CHAR(valuta_tag,'FM999'),'0'),2,'0'), RPAD(NVL(belegart,' '),3,' '), -- bs_bezeichnung NVL(soll_oder_haben,' '), -- soll_haben_sz buch_betrag, -- ew_vz_ermittler RPAD(replace(substr(to_char(abs(buch_betrag),'FM099999999999.99'),2,14),'.',','),14,'0'), RPAD(replace(nvl(substr(to_char(abs(steuerbetrag),'FM099999999999.99'),2,14),'0'),'.',','),14,'0'), RPAD(replace(nvl(substr(to_char(abs(skonto_betrag),'FM099999999999.99'),2,14),'0'),'.',','),14,'0'), LPAD(NVL(TO_CHAR(TO_NUMBER(steuerart),'FM9999'),'0'),3,'0'), -- steuersatznummer RPAD(replace(nvl(substr(to_char(abs(steuersatz),'FM0999.99'),2,6),'0'),'.',','),6,'0'), RPAD(NVL(laender_kenner,' '),2,' ') || -- ust_id_nummer_kd RPAD(NVL(ust_id_nr_rest,' '),12,' '), RPAD(replace(nvl(substr(to_char(abs(fremdw_betrag),'FM099999999999.99'),2,14),'0'),'.',','),14,'0'), RPAD(replace(nvl(substr(to_char(abs(steuerbetrag),'FM099999999999.99'),2,14),'0'),'.',','),14,'0'), RPAD(replace(nvl(substr(to_char(abs(skonto_betrag),'FM099999999999.99'),2,14),'0'),'.',','),14,'0'), RPAD(NVL(waehrung,' '),3,' '), -- waehrungsbez RPAD(NVL(TO_CHAR(beleg_nr,'FM999999999'),'0'),25,' '), -- text_fremdbelg_nr RPAD(NVL(buchungstext,' '),50,' '), -- buchungstext LPAD(NVL(FLOOR(ABS(entnahme_menge)),'0'),11,'0'), -- menge RPAD(NVL(mengeneinheit,' '),3,' '), -- mengen_kz LPAD(NVL(TO_CHAR(TO_NUMBER(zahlungsziel_kenner),'FM9999'),'0'),3,'0'), -- zahlungs_kond_nr LPAD(NVL(TO_CHAR(skonto_tage_1,'FM9999'),'0'),3,'0'), -- skonto1_tage LPAD(NVL(TO_CHAR(skonto_tage_2,'FM9999'),'0'),3,'0'), -- skonto2_tage LPAD(NVL(TO_CHAR(TO_NUMBER(kostenstelle),'FM999999999'),'0'),8,'0'), -- kostenstelle LPAD(NVL(TO_CHAR(TO_NUMBER(kt_frei),'FM999999999'),'0'),8,'0'), -- kt_frei als kostentraeger LPAD(NVL(TO_CHAR(netto_tage,'FM99999'),'0'),4,'0'), -- netto_faellig_tage buchungs_pos_nr, beleg_nr, RPAD(NVL(lieferanten_kunden_name,' '),30,' '), -- ku_li_name fremdw_betrag -- fw_vz_ermittler from "MOSCA"."PFIB" where gebucht <> 'J'; BEGIN OPEN varial_fib; LOOP FETCH varial_fib into buchungsperiode, erfassungsdatum, konto_sa, konto_nr, erl_kto, gegenkonto_sa, gegenkonto_nr, belegnummer, beleg_datum, valuta_datum, bs_bezeichnung, soll_haben_sz, ew_vz_ermittler, betrag_ew, steuer_betrag_ew, skonto_betrag_ew, steuersatznummer, steuer_prozentsatz, ust_id_nummer_kd, betrag_fw, steuer_betrag_fw, skonto_betrag_fw, waehrungsbez, text_fremdbelg_nr, buchungstext, menge, mengen_kz, zahlungs_kond_nr, skonto1_tage, -- skonto1_prozent, skonto2_tage, -- skonto2_prozent, kst_ktr1_nr, -- k_traeger, netto_faellig_tage, pos_merker, nr_merker, ku_li_name, fw_vz_ermittler; |
![]() |
| Viewing: Dev Shed Forums > Databases > Oracle Development > Problem with Writing a Cursor Error ORA-06512: at line 188 |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|
|
|