sql – 如何在TOAD的DataGrid中显示sys_refcursor数据

前端之家收集整理的这篇文章主要介绍了sql – 如何在TOAD的DataGrid中显示sys_refcursor数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要帮助.
(我搜索了很多并且变得更加困惑.)

我使用Toad 9.7.25并且我做了这个程序(在一个包中)

  1. PROCEDURE ReportaCC(pfcorte IN DATE,lcursor IN OUT SYS_REFCURSOR)
  2. IS
  3. BEGIN
  4. OPEN lcursor FOR
  5. select c1,c3,c3 from table1 where hdate = pfcorte;
  6. close lcursor;
  7. END;

在toad的sql编辑器中,我想执行该过程并将光标结果显示在toad的datagrid中:

  1. --- I WANT THIS CODE CAN EXECUTE IN TOAD'S sql EDITOR.
  2.  
  3. DECLARE
  4. PFCORTE DATE;
  5. LCURSOR SYS_REFCURSOR;
  6. BEGIN
  7.  
  8. PFCORTE := '31/08/2012';
  9. -- LCURSOR := NULL; -- Modify the code to initialize this parameter
  10.  
  11. mypaq.REPORTACC( TO_DATE(PFCORTE,'DD/MM/YYYY'),LCURSOR );
  12.  
  13. :to_grid := LCURSOR;
  14.  
  15. COMMIT;
  16.  
  17. END;

当我执行脚本(F9),并设置变量:to_grid类型光标,
我得到了下一个错误

“ORA-24338:语句句柄未执行”

可能是什么问题

提前致谢.

谢谢你的四个帖子……工作得很好!

但现在有另一个问题……
如果我替换这样的复杂查询(从表中选择c1,c2,c3 …):

  1. PROCEDURE ReportaCC(pfcorte IN DATE,lcursor OUT SYS_REFCURSOR)
  2. IS
  3. BEGIN
  4.  
  5. OPEN lcursor FOR
  6.  
  7. 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,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.CDGCL,sal.CICLO,SAL.INICICLO,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,NULL AS DOMDEVOL
  8. FROM
  9. CIRCRED.VW_ENCABEZADO ENC,circred.VW_DATOSPERDOM VCL,ICARO.VW_PROYINVE SC,CIRCRED.EMPLEO EMP,CIRCRED.VW_SALDOINCOB SAL
  10. WHERE SAL.FUENTEBD = 'ESIACOM'
  11. AND SAL.CDGCL = VCL.CDGCL
  12. AND SAL.CDGCL = SC.CDGCL(+) AND SAL.CICLO = SC.CICLO(+) and SAL.INICICLO = SC.INICIO(+)
  13. AND SAL.FCORTE = pfcorte
  14. AND SAL.STATUSCC IN ('INCOB','CIERR','CEROS') ;
  15.  
  16. END ReportaCC;

为什么不能显示结果?
(如果我直接在TOAD sql编辑器中执行它,查询工作正常)

再次感谢….!!!

解决方法

点击F9后,出现“变量”对话框,从下拉列表中选择Type = Cursor,然后按OK:

您收到“ORA-24338:语句句柄未执行”错误的原因是因为您在访问之前关闭了光标.

这是正在发生的过程:

>执行程序
> OPEN语句返回指向内存中结果集的指针(但不返回任何数据)
> CLOSE语句在访问结果之前丢弃结果
>过程调用结束
>客户端调用程序(在本例中为TOAD)尝试访问结果流,但指针无效,因此无法读取任何内容并抛出错误

解决方案:删除关闭lcursor;声明.

猜你在找的MsSQL相关文章