Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivos
Al finalizar esta leccin, debera estar capacitado para lo si !iente" Describir el fl!jo de ejec!cin de sentencias SQL #onstr!ir y ejec!tar sentencias SQL dinmicamente !tilizando SQL dinmico nativo $es decir, con sentencias EXECUTE IMMEDIATE% #omparar SQL dinmico nativo con el enfo&!e del pa&!ete DBMS_SQL 'tilizar el pa&!ete DBMS_METADATA para obtener metadatos del diccionario de datos como (ML o DDL de creacin &!e p!eden !tilizarse para recrear los objetos
-!ede &!e al !nas de estas etapas no sean relevantes para todas las sentencias, por ejemplo, la fase de rec!peracin se aplica a las cons!ltas. /ota" -ara sentencias SQL embebidas $SELECT, DML, COMMIT y ROLLBACK%, las fases de anlisis y enlace se realizan en tiempo de compilacin. -ara sentencias SQL dinmicas, todas las fases se realizan en tiempo de ejec!cin.
Copyright 2004, Oracle. Todos los Derechos Reservados.
SQL Dinmico
'tilice SQL dinmico para crear !na sentencia SQL c!ya estr!ct!ra p!ede cambiar en tiempo de ejec!cin. SQL Dinmico" Se constr!ye y almacena como !na cadena de caracteres dentro de la aplicacin *s !na sentencia SQL con datos de col!mna variables o diferentes condiciones con o sin variables pendientes de asi nacin $variables li adas% Activa sentencias de definicin y control de datos o sentencias de control de sesin para &!e se escriban y ejec!ten desde -L0SQL Se ejec!tan con sentencias SQL dinmicas nativas o con el pa&!ete DBMS_SQL
Copyright 2004, Oracle. Todos los Derechos Reservados.
INTO se !tiliza para cons!ltas de !na sola fila y especifica las variables o los re istros en los &!e los valores de col!mna se rec!peran. USING se !tiliza para contener todos los ar !mentos enlazados. *l modo de parmetro por defecto es IN, si no se especifica.
Copyright 2004, Oracle. Todos los Derechos Reservados.
; 5#/%_!."B$" "#A_!%>/# #*/_!."B$" #*/_"#A_!%>/# BEGIN OPEN #*/_!."B$" FOR SELECT @ FROM #*/'->##. OPEN 5#/%_!."B$" FOR SELECT @ A"-* 5#/$"%*#)%. -- TC#) E.# $. )-"*$' !E".-". END
Copyright 2004, Oracle. Todos los Derechos Reservados.
-a&!ete DBMS_METADATA
*l pa&!ete DBMS_METADATA proporciona !na !tilidad centralizada para la e6traccin, manip!lacin y reenvo de los metadatos del diccionario.
A-2 de Metadatos
*l procesamiento implica los si !ientes pasos" 7. La rec!peracin de los metadatos de !n objeto como (ML. 8. La transformacin de (ML de varias maneras $incl!ida s! transformacin en SQL DDL%. 9. La ejec!cin de (ML para recrear el objeto.
Descripci*
(speci%ica el tipo de o&'eto !ue se de&e recuperar, la versi* de sus )etadatos y el )odelo de o&'eto. (l valor de retor o es u )a e'ador de co texto opaco para el 'uego de o&'etos. (speci%ica las restriccio es e los o&'etos !ue se de&e recuperar tales co)o el o)&re o el es!ue)a del o&'eto (speci%ica el /)ero )#xi)o de o&'etos !ue se de&e recuperar e u a sola lla)ada FETCH_xxx Devuelve el texto de las co sultas !ue utili"ar# FETCH_xxx $ctiva el a #lisis de la salida y especi%ica el atri&uto de u o&'eto para !ue se a alice y devuelva (speci%ica u a tra s%or)aci* !ue FETCH_xxx aplica a la represe taci* +,- de los o&'etos recuperados (speci%ica los par#)etros de la ho'a de estilo +.-T ide ti%icada por transform_hand ! Devuelve )etadatos para los o&'etos !ue cu)ple los criterios esta&lecidos por OPEN, SET_FI"TER 0 valida el )a e'ador devuelto por OPEN y li)pia el estado asociado
FETCH_C"O$ FETCH_#M"_C"O$
-rocedimiento SET_FILTER
Sinta6is"
PROCEDURE .#%_A4'%#" ( C$)5'# IN NUMBER, )$*# IN +ARCHAR,, B$'E# IN +ARCHAR,|BOOLEAN|NUMBER, -&H#!%_%>/#_/$%C +ARCHAR, 0
*jemplo"
... DBMS_METADATA.SET_FILTER (C$)5'#, 1NAME1, 1HR10 ...
)iltros
:ay ms de ;< filtros or anizados por cate oras de tipos de objetos tales como" Objetos con nombre +ablas Objetos dependientes de tablas =ndice Objetos dependientes Objetos otor ados Datos de tabla *stadsticas de ndice ,estricciones +odos los tipos de objetos *6portacin de la base de datos
Copyright 2004, Oracle. Todos los Derechos Reservados.
Slo /otas
Slo /otas
A-2 de *6ploracin
1o)&re GET_XXX Descripci* -as %u cio es GET_#M" y GET_DD" devuelve )etadatos para u s*lo o&'eto co o)&re. (sta %u ci* devuelve )etadatos para u o&'eto depe die te. (sta %u ci* devuelve )etadatos para u o&'eto otorgado. DD" o #M"
GET_DEPENDENT_XXX GET_GRANTED_XXX
Do de xxx es5
9. ,ec!pere el DDL para todos los permisos del sistema otor ados a HR"
SELECT DBMS_METADATA.GET_GRANTED_DDL (1S3STEM_GRANT1, 1HR10 FROM 5E$'
BEGIN DBMS_METADATA.SET_TRANSFORM_PARAM( DBMS_METADATA.SESSION_TRANSFORM, 1STORAGE1, A$'.#0 END 2 SELECT DBMS_METADATA.GET_DDL(1TABLE1,E.%$&'#_)$*#0 FROM E.#"_$''_%$&'#. E :HERE E.)#.%#5 ? 1NO1 AND (E.4-%_%>/# IS NULL OR E.4-%_%>/# ? 1IOT10 BEGIN DBMS_METADATA.SET_TRANSFORM_PARAM( DBMS_METADATA.SESSION_TRANSFORM, 1DEFAULT10; END 2
,es!men
*n esta leccin, debe 1aber aprendido lo si !iente" *6plicar el fl!jo de ejec!cin de sentencias SQL #rear sentencias SQL dinmicamente y ejec!tarlas !tilizando sentencias SQL dinmicas nativas o el pa&!ete DBMS_SQL ,econocer las ventajas de !so de SQL dinmico nativo en comparacin con el pa&!ete DBMS_SQL 'tilizar s!bpro ramas DBMS_METADATA para obtener metadatos del diccionario de datos mediante pro ramacin