Diferencias entre Cursores en Oracle
tema enviado por fg3040 en ORACLE
tema iniciado el 07/04/2009
Hola, Desarrollo en oracle y pues he hecho cursores como este
cursor cur is select * from dual
y tambien dinamicos como este
DECLARE
V_CURSOR NUMBER;
V_QUERY_SUC VARCHAR2(1000);
X NUMBER;
V_COD_SUCURSAL SUCURSAL.COD_SUCURSAL%TYPE;
V_NOM_SUCURSAL SUCURSAL.NOM_SUCURSAL%TYPE;
BEGIN
:GLOBAL.SUC_INVALIDAS := VAL_SUC_COMITES_CRED(:TIPO_COMITE.TIPO_COMITE,TO_CHAR(:COMITE_CRED.FEC_EFECTIVA,'DD/MM/YYYY'), TO_CHAR(:COMITE_CRED.FEC_VENCIMIENTO,'DD/MM/YYYY'));
V_QUERY_SUC := 'SELECT NOM_SUCURSAL,COD_SUCURSAL FROM SUCURSAL WHERE COD_EMPRESA = '||''''||:GLOBAL.EMPRESA||''''||' AND COD_SUCURSAL NOT IN '||:GLOBAL.SUC_INVALIDAS||' AND COD_SUCURSAL = '||''''||:COMITE_SUCURSAL.COD_SUCURSAL||''''||' AND COD_SUCURSAL <> '||'''00''';
V_CURSOR := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(V_CURSOR,V_QUERY_SUC,1);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR,1,V_COD_SUCURSAL,20);
DBMS_SQL.DEFINE_COLUMN(V_CURSOR,2,V_NOM_SUCURSAL,2);
X := DBMS_SQL.EXECUTE(V_CURSOR);
IF DBMS_SQL.FETCH_ROWS(V_CURSOR) = 0 then
DBMS_SQL.CLOSE_CURSOR(V_CURSOR);
MSGS('N','El codigo es invalido o no existe...Presione F9','SIAF-SAC',TRUE);
END IF;
DBMS_SQL.COLUMN_VALUE(V_CURSOR,1,V_NOM_SUCURSAL);
DBMS_SQL.COLUMN_VALUE(V_CURSOR,2,V_COD_SUCURSAL);
:COMITE_SUCURSAL.DESC_SUCURSAL := V_NOM_SUCURSAL;
DBMS_SQL.CLOSE_CURSOR(V_CURSOR);
:GLOBAL.SUC_INVALIDAS := NULL;
END;
MI PREGUNTA ES: AL MOMENTO DE USAR CUALQUIERA DE LAS DOS FORMAS DE CURSORES QUE MENCIONE ANTERIORMENTE Y SUPONIENDO QUE SE EJECUTA UNA MISMA CONSULTA, CUAL DE LOS DOS OFRECE MEJOR TIEMPO DE RESPUESTA?.