Cursores en PL SQL - Programación PL SQL PDF

Title Cursores en PL SQL - Programación PL SQL
Author Seshat Arb
Course Laboratorio Diseño de Sistemas Lógicos
Institution Universidad Nacional Experimental Politécnica Antonio José de Sucre
Pages 18
File Size 749.6 KB
File Type PDF
Total Downloads 92
Total Views 181

Summary

El grupo de paquetes DBMS se trata de un conjunto de funciones y procedimientos que el PL/SQL de Oracle incorpora de forma estándar. Estos paquetes DBMS pueden ser de mucha utilidad cuando estamos programando en PLSQL. Hoy voy a hablar sobre el paquete DBMS_SQL que permite utilizar SQL dinámico en p...


Description

22/10/2016

CursoresenPL/SQLProgramaciónPL/SQL

Programación PL/SQL El lenguaje de programación de bases de datos Oracle PL/SQL. Librerías y funciones estándar SQL y PLSQL.

AnunciosentutorialdeprogramaciónPLSQL

SigueaprogramaciónPLSQL

martes,5dediciembrede2006

Búsquedasrecomendadasen programaciónPL/SQL

CursoresenPL/SQL Megusta

3

Twittear

Anuncios Google

1

Loscursoresseutilizanen PL/SQLpara manejarlassentencias SELECT.Un cursor estaformadoporunconjuntoderegistros devueltosporunainstrucción SQLdeltipo SELECT.Desdeunpuntodevistointernoala basededatosOracle,loscursoresson segmentosdememoriautilizadospararealizar operacionesconlosregistrosdevueltostras ejecutarunasentencia SELECT.

Cursores

Anuncios Google



OrderPLSQL

OraclePlsql ForOracle

DeustoformaciónCursodecreaciónde páginasweb

Sepuedendistinguirdostiposdecursores: Cursoresimplícitos:Seutilizancuandolasentencia SELECTdevuelveunsolo registroysuformatoescomosigue: DECLARE lsalarioempleados.salario%TYPE; ldniempleados.dni%TYPE; BEGIN SELECTsalario,dni INTOlsalario,ldni FROMempleados WHEREnombre='Juan' ANDapellidos='RodrigoComas'; /*Restodesentenciasdelbloque*/ END; Nota:MuchagenteconsideraquelassentenciasUPDATE,dentrodeunbloque PLSQL,sontambiéncursoresimplícitos,noobstante,yoprefieronoincluirlasdentro deesteconcepto.

BuscarenprogramaciónPLSQL

Buscar

PromocionesenprogramaciónPL/SQL

Cursoresexplícitos:SeutilizancuandolasentenciaSELECTpuededevolvervarios registros.Tambiénsepuedenutilizarenconsultasquedevuelvanunsoloregistropor razonesdeeficienciaconrespectoaloscursoresimplícitos,eficienciaquemejorará especialmentesielcursorexplícitosetienequeejecutarvariasvecesdentrodel bloquedecódigoPL/SQL. Uncursorexplícitotienequeserdefinidopreviamentecomocualquierotravariable PLSQLydebeserleasignadounnombre.VeamosunejemploquemuestraelDNIyel salariodelostrabajadoresincluidosenlatablaempleados: DECLARE

http://www.plsql.biz/2006/12/cursoresenplsql.html#more

1/18

22/10/2016

CursoresenPL/SQLProgramaciónPL/SQL

CURSORcempIS SELECTsalario,dni FROMempleados; cepm_reccemp%ROWTYPE; BEGIN FORcemp_recINcemp LOOP DBMS_OUTPUT.PUT_LINE (cemp_rec.dni||''||cemp_rec.salario); ENDLOOP; END; Loscursoresexplícitosadmitenelusodeparámetros.Losparámetrosdeben declararsejuntoconelcursor.Porejemplo: DECLARE CURSORcemp(pnombreINVARCHAR2)IS SELECTsalario,dni FROMempleados WHEREnombre=pnombre; cepm_reccemp%ROWTYPE; vnombreVARCHAR2(20); BEGIN vnombre:='Juan'; DBMS_OUTPUT.PUT_LINE ('Sueldodelosempleadosconnombre'||vnombre); FORcemp_recINcemp(vnombre) LOOP DBMS_OUTPUT.PUT_LINE (cemp_rec.dni||''||cemp_rec.salario); ENDLOOP; END; EnlosejemplosanterioresloscursoressehancontroladoconlasentenciaFORpero tambiénpuedencontrolarsemedianteelusodelassentenciasOPEN, FETCHy CLOSE.LasentenciaOPENidentificaelcursorquesetienequeutilizar.Lasentencia FETCHpone,registroaregistro,losvaloresdevueltosporelcursorenlasvariables correspondientes,variablesquepuedenestarconstituidasporunalistadevariableso unregistroPLSQL(esteeselcasodelosejemplosqueincluyoenesteartículo).Por último,lasentenciaCLOSEcierraelcursoryliberalamemoriareservada.Veamos comoquedaríanuestroejemploutilizandoestetipodesentenciasenlugardeutilizarla sentenciaFOR:

Desarrolladopor: (//www.beon4u.com/) PROGRAMACIÓN PLSQL (HTTP://WWW.BEON

Tecnología, innovación y negocios serán los protagonistas del Oracle Digital Day ¿Estás preparado?… http s://t.co/ELBMskdyUK (https://t.co/EL BMskdyUK) (https://www.twitter.com/oracle_es (h ) tt oracle_es p (https://www.twitter.com/oracle_es) s: hace 1 dia // w SE EL PRIMERO w w LLEVATEESTEWIDGET(//www.beon4u.com/es/mywidget/widget/319)

FavoritosdePL/SQL Ajedrez Registrodedominios Ganardinerocontuweb Pepelu

DECLARE CURSORcemp(pnombreINVARCHAR2)IS SELECTsalario,dni FROMempleados WHEREnombre=pnombre; cepm_reccemp%ROWTYPE; vnombreVARCHAR2(20); BEGIN vnombre:='Juan'; DBMS_OUTPUT.PUT_LINE ('Sueldodelosempleadosconnombre'||vnombre); OPENcemp(vnombre); LOOP FETCHcempINTOcemp_rec; DBMS_OUTPUT.PUT_LINE (cemp_rec.dni||''||cemp_rec.salario); EXITWHENcemp%NOTFOUND;Últimoregistro. ENDLOOP; DBMS_OUTPUT.PUT_LINE ('Númerodeempleadosprocesados'||cemp%ROWCOUNT); CLOSEcemp; END;

Cursosdeformación Aplicaciones Pregúntame Juegosdeingenio

Ofertasde interésen programación PLSQL 

Sólomequedaseñalarqueexisteunaterceraopciónparamanejarcursoresqueamí, particularmente,nomegustautilizarperoquenoquieroomitir:

http://www.plsql.biz/2006/12/cursoresenplsql.html#more

2/18

22/10/2016

CursoresenPL/SQLProgramaciónPL/SQL

DECLARE TYPEecursorISREFCURSORRETURNempleados%ROWTYPE; cempecursor; cepm_recempleados%ROWTYPE; BEGIN OPENcempFORSELECT*FROMempleados; FORcemp_recINcemp LOOP DBMS_OUTPUT.PUT_LINE (cemp_rec.dni||''||cemp_rec.salario); ENDLOOP; END;

Maestría en Gestión Ambiental

Finalmentesólomencionarqueexistencuatrotiposdeatributosquenospermiten controlarlaejecucióndeuncursor: %ISOPEN:Devuelve"true"sielcursorestáabierto. %FOUND:Devuelve"true"sielregistrofuesatisfactoriamenteprocesado. %NOTFOUND:Devuelve"true"sielregistronopudoserprocesado.Normalmente estoocurrecuandoyasehanprocesadotodoslosregistrosdevueltosporelcursor. %ROWCOUNT:Devuelveelnúmeroderegistrosquehansidoprocesadoshastaese momento.

PublicadoenPLSQLporJoséLuisPérezalas6:39p.m.  Etiquetas:TutorialPL/SQL Compartir:

1

45

65comentarios: Lomdijo... Hola, HatahoysiemprehabíamanejadoloscursoresusandoOPEN,FETCHy CLOSEconEXITWHEN..%NOTFOUNDparasalirdelLOOP. Mehasorprendidolasimplicidaddemanejoexplicadaen: DECLARE CURSORcempIS SELECTsalario,dni FROMempleados; cepm_reccemp%ROWTYPE; BEGIN FORcemp_recINcemp LOOP DBMS_OUTPUT.PUT_LINE (cemp_rec.dni||''||cemp_rec.salario); ENDLOOP; END;

EtiquetasenProgramaciónPLSQL

Bases de datos Oracle Optimizaciónytuningdebasesde datos Tutorial PL/SQL

Gracias CarlosEduardodijo... Saludos,muybuenalaexplicacion,buenotengounapreg. Tengohechoabasedecursoresconquery'sdinamicosunprocedimiento enoracleypueslaverdadtardaenlostiemposderespuestaquisiera sabercomoreducirestostiempos,siacasoelusodeloscursoresreduce estostiemposoincrementaocualdelasformasqueexplicasesmas efectiva,buenobuenoesaesunapreg:P,laotraesqueparaelcasode pruebashecorridomistoreyayertermineelstoresinfinalizareste

http://www.plsql.biz/2006/12/cursoresenplsql.html#more

3/18

22/10/2016

CursoresenPL/SQLProgramaciónPL/SQL (ctrl+alt+delete:P)eintentedenuevoperoconunoscambiosenelstore (sinmodificarpartedelcursoroformadeuso)ylodejeasitodalanoche, yhoyreviseynohaterminado:Slapreguntaessielcursorsequeda bloqueadooalgoasienlabasededatos(yaquelocorridesdeuna terminalpuesnotengoaccesoadondeestamontadalabasededatos)asi esquetengoesas2dudas,megustariasabersisabesalgoalrespectote agradeceria,buenosipuedespuesposteaalgoomandameuncorreoa char_corp@hot....gracias. Pepeludijo... HolaCarlosEduardo, Losdosmotivosmásusualesporlosqueuncursortardademasiado tiempoenejecutarseson: 1)Unproblemaderendimiento,esdecir,quedentrodelcursortengas algunaconsultadinámicaquetardemuchotiempoenejecutarse. Enestecasoterecomiendoquepruebeslasconsultasdinámicasunaa unaparadeterminarcualeslaqueteestádandoproblemas. 2)Querealicesalgunaoperaciónquenecesitebloquearalgúnobjetodela basededatosydichoobjetoestéyabloqueadoyelcursorsequede experandohastaqueelobjetoquedeliberado. CRiveradijo... sisecualcualeslaquetardamastiempoperopuesesporeltipode consultaalgunconsejopararealizarquerysmasrapidos,quierodecirmira miqueryesalgoasi (SELECTB.ACCOUNT_NO,SUM(B.BALANCE_DUE)FROM CMF_BALANCE@NAMESERVER01,CMF@NAMESERVER01CWHERE B.ACCOUNT_NO=C.ACCOUNT_NOANDC.ACCOUNT_STATUS>=1 ANDB.PPDD_DATE=TRUNC(SYSDATE1)AND A.PERIOD_START_TIME...


Similar Free PDFs