So zeigen Sie eine sys_refcursor Daten in KRÖTE DataGrid
Bitte ich brauche Hilfe.
(Ich SUCHTE EINE Menge und bekommen mehr verwirrt . )
Ich benutze Toad 9.7.25 und ich habe diese Prozedur (in einem Paket)
PROCEDURE ReportaCC(pfcorte IN DATE, lcursor IN OUT SYS_REFCURSOR)
IS
BEGIN
OPEN lcursor FOR
select c1, c3, c3 from table1 where hdate = pfcorte;
close lcursor;
END;
In der toad sql-editor-id, wie ausgeführt, das Verfahren und zeigen Sie den cursor Ergebnisse in Kröte datagrid:
--- I WANT THIS CODE CAN EXECUTE IN TOAD'S SQL EDITOR.
DECLARE
PFCORTE DATE;
LCURSOR SYS_REFCURSOR;
BEGIN
PFCORTE := '31/08/2012';
-- LCURSOR := NULL; -- Modify the code to initialize this parameter
mypaq.REPORTACC( TO_DATE(PFCORTE,'DD/MM/YYYY') , LCURSOR );
:to_grid := LCURSOR;
COMMIT;
END;
Wenn ich das Skript ausführen (F9), und setzen Sie die variable :to_grid Typ cursor,
bekomme ich den nächsten Fehler:
"ORA-24338: statement-handle nicht ausgeführt"
Was kann das problem sein
Vielen Dank im Voraus.
Dank vier Ihrer Beiträge... funktionierte Prima!
Haben, jetzt aber eine andere Frage...
Wenn ich die Stelle des einfachen Abfrage (select c1, c2, c3 from table...) für einen mor Komplex wie diese:
PROCEDURE ReportaCC(pfcorte IN DATE, lcursor OUT SYS_REFCURSOR)
IS
BEGIN
OPEN lcursor FOR
SELECT ENC.CVEOTORGANTE, ENC.NOMBREOTORGANTE, ENC.IDENDINTIFICADORDEMEDIO, TO_CHAR(SYSDATE, 'YYYYMMDD') AS FECHAEXT, ENC.NOTAOTORGANTE,
CIRCRED.valida_cc.QUITASIGNOS(VCL.APELLIDOPATERNO) AS VAL_APELLIDOPATERNO,
CIRCRED.valida_cc.QUITASIGNOS(VCL.APELLIDOMATERNO) AS VAL_APMATERNO,
CIRCRED.valida_cc.QUITASIGNOS(VCL.APELLIDOADICIONAL) AS APELLIDOADICIONAL ,
CIRCRED.valida_cc.QUITASIGNOS(VCL.NOMBRES) AS NOMBRES,
VCL.FECHANACIMIENTO,
circred.valida_cc.valida_rfc(Vcl.rfc,'CORRIGE') AS VALRFC,
circred.valida_cc.valida_curp(VCL.CURP,'CORRIGE') AS VALCURP, VCL.NACIONALIDAD,
circred.valida_cc.valida_RESIDENCIA('ESIACOM', SC.TIPOVIV ) AS VAL_RESIDENCIA, VCL.NUMEROLICENCIACONDUCIR,
circred.valida_cc.valida_EDOCIVIL('ESIACOM', VCL.ESTADOCIVIL) AS VAL_ESTADOCIVIL, VCL.SEXO,
circred.valida_cc.valida_IFE(VCL.CLAVEELECTORIFE,'CORRIGE') AS CLAVEELECTORIFE,
VCL.NUMERODEPENDIENTES,
VCL.FECHADEFUNCION, VCL.INDICADORDEFUNCION, VCL.TIPOPERSONA,
CIRCRED.valida_cc.QUITASIGNOS(VCL.DIRECCION) AS DIRECCION,
CIRCRED.valida_cc.QUITASIGNOS(VCL.COLONIAPOBLACION) AS COLONIAPOBLACION,
CIRCRED.valida_cc.QUITASIGNOS(VCL.DELEGACIONMUNICIPIO) AS DELEGACIONMUNICIPIO,
CIRCRED.valida_cc.QUITASIGNOS(VCL.CIUDAD) AS CIUDAD,
VCL.ESTADO, circred.valida_cc.valida_cp(VCL.CP, VCL.CDGEF) AS VAL_CP, VCL.FECHARESIDENCIA,
circred.valida_cc.valida_TEL(VCL.NUMEROTELEFONO,'CORRIGE') AS VAL_TEL, circred.valida_cc.valida_TIPODOMICILIO('ESIACOM', 'C') AS VAL_TIPODOMICILIO, VCL.TIPOASENTAMIENTO,
EMP.*,
ENC.CVEOTORGANTE CVEACTUAL, ENC.NOMBREOTORGANTE, SAL.CUENTAACTUAL, SAL.TIPORESPONSABILIDAD, SAL.TIPOCUENTA, SAL.TIPOCONTRA, SAL.CLAVEUNIDADMONETARIA, SAL.VALORACTIVOVALUACION,
SAL.NUMPAGOS, SAL.FREQPAGOS,SAL.PAGOPACCL, SAL.FECHAAPERTURACUENTA,
TO_CHAR(circred.valida_cc.FUN_FULTDEPCL(sal.CLNS, sal.CDGNS, sal.CDGNS, sal.CDGCL, sal.CICLO, SAL.INICICLO, SAL.FREQPAGOS, pfcorte ), 'YYYYMMDD') AS FULTPAGO,
SAL.FECHAULTIMACOMPRA, SAL.FECHACIERRECUENTA, SAL.FECHACORTE, SAL.GARANTIA, SAL.CREDITOMAXIMO,
SAL.SALDOCL, SAL.limitecredito, SAL.SDOVENCL, SAL.NUMPAGVEN, SAL.pagoactual, SAL.HISTORICOPAG, SAL.CLAVEPREVENCION, SAL.TOTPAGREP, SAL.CLAVEANTERIOROTORGANTE,
SAL.NOMBREANTERIOROTORGANTE, SAL.NUMEROCUENTAANTERIOR,
SAL.SUMSALDO, SAL.sumsdoven, SAL.numcred, SAL.numdirecc, SAL.numempleo, SAL.numctas, ENC.NOMBREOTORGANTE, NULL AS DOMDEVOL
FROM
CIRCRED.VW_ENCABEZADO ENC,
circred.VW_DATOSPERDOM VCL,
ICARO.VW_PROYINVE SC,
CIRCRED.EMPLEO EMP,
CIRCRED.VW_SALDOINCOB SAL
WHERE SAL.FUENTEBD = 'ESIACOM'
AND SAL.CDGCL = VCL.CDGCL
AND SAL.CDGCL = SC.CDGCL(+) AND SAL.CICLO = SC.CICLO(+) and SAL.INICICLO = SC.INICIO(+)
AND SAL.FCORTE = pfcorte
AND SAL.STATUSCC IN ('INCOB', 'CIERR', 'CEROS') ;
END ReportaCC;
Warum kann die Ergebnisse anzeigen?
(Die Abfrage funktioniert, wenn ich es ausführen direkt im TOAD SQL-editor)
Nochmals vielen Dank....!!!
- Sie sollten nicht schließen Sie den cursor an das Ende der Prozedur.
- Ich schlage vor, Sie Lesen Sie die mission statement und der FAQ über Stack Overflow.
- Wo diese Abfrage nicht funktioniert?
- Polppan: Wenn ich die Prozedur aufrufen.... keine Zeilen anzeigen.... ERKLÄREN PFCORTE DATUM; BEGIN PFCORTE := 'AM 31.08.2012'; ICARO.ICARO_PRUEBA.REPORTACC_SALDOSINCOB ( TO_DATE(PFCORTE,'DD/MM/YYYY') , :CCCURSOR ); END; /
- Woher weißt du, dein SQL ist korrekt? Wenn keine Fehler geworfen wird, dann klingt es so, als wenn Ihr select-Anweisung ist einfach-nicht wieder alle Zeilen. Vielleicht ist nichts an den Kriterien entspricht, vielleicht auch das Datum/Zeit-Parameters stimmt nicht überein (versuchen
AND TRUNC(SAL.FCORTE) = TRUNC(pfcorte)
zu entfernen, die Zeit-element aus dem Datum-Vergleich) oder vielleicht einer Ihrer Verknüpfungen ist schlecht. Führen Sie die Anweisung außerhalb der Prozedur, um zu überprüfen, dass es sollte in der Tat die Rückgabe von Zeilen. - Hi wweicker, ich habe es getan: ich lief die Anweisung außerhalb der Prozedur und es gibt Zeilen.. nur wenn ich Anrufe, als ich erklärte, nicht Zeilen anzeigen.... Dank
- Wenn es ein sql-select-Anweisung, warum nicht eine Funktion verwenden? Haben Sie ausgeführten sql-Anweisung außerhalb der Prozedur durch die übergabe PFCORTE wie to_char? weil in Ihrem Verfahren ist es to_char.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem Sie traf
F9
die "Variablen" - dialog erscheint und wählen Sie Type=Cursor aus der dropdown-Liste und drücken Sie dann OK:Dem Grund, dass Sie immer die "ORA-24338: statement-handle nicht ausgeführt werden" Fehler ist, da schließen Sie den cursor, bevor darauf zugegriffen wird.
Dies ist der Prozess, der passiert ist:
Lösung: Entfernen Sie die
close lcursor;
- Anweisung.Als Ihr Verfahren ist dabei nur eine select-Anweisung verwenden Sie besser eine Funktion wie
Nicht schließen lcursor hier, in der Nähe von Ihrem Aufruf Aussage, weil wenn Sie in der Nähe lcursor dann würden Sie nicht in der Lage sein zu sehen Ergebnisse.
Und führen Sie als
von Kröte, Doppel-klicken Sie den cursor im datagrid zu sehen, die Ergebnisse.