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.

InformationsquelleAutor Arzamm | 2012-10-05
Schreibe einen Kommentar