Anda di halaman 1dari 21

Prefacio

Los desarrolladores de Oracle que quieren tener xito en el siglo 21 deben aprender a
utilizar PL / SQL para el mximo provecho. Este es un proceso de dos etapas. En
primer lugar, usted debe conocer y aprender a utilizar el lenguaje en constante
expansin conjunto de caractersticas; y en segundo lugar, despus de ganar la
competencia en las caractersticas individuales, debe aprender a poner estas
construcciones en conjunto para construir aplicaciones complejas.

Por estas razones y ms, los desarrolladores de Oracle necesitan un slido recurso
integral para la base lenguaje PL / SQL. Es necesario conocer los elementos bsicos de
PL / SQL de construccin, pero tambin hay que aprender con el ejemplo, para que
pueda evitar algunos de la prueba y error. Como con cualquier lenguaje de
programacin, PL / SQL tiene una manera correcta y muchos caminos equivocados (o
por lo menos no como formas "correctas") para manejar casi cualquier tarea. Es mi
esperanza que este libro le ayudar a aprender cmo utilizar el lenguaje PL / SQL de la
manera ms eficaz y eficiente posible.

Objetivos de este libro

Sacar el mximo provecho de PL / SQL


Manuales de referencia de Oracle pueden describir todas las caractersticas del
lenguaje PL / SQL, pero no te dicen cmo aplicar la tecnologa. De hecho, en algunos
casos, tendrs suerte de entender incluso cmo utilizar una determinada
caracterstica despus de haber hecho su camino a travs de los diagramas de
ferrocarril. Libros y cursos de formacin tienden a cubrir los mismos temas estndar
de la misma manera limitada. En este libro, voy a aventurarse ms all de lo bsico a
los confines de la lengua, la bsqueda de las formas no estndar que una
caracterstica particular puede ser ajustado para lograr un resultado deseado.

Utilice PL / SQL para resolver sus problemas


No pase sus das y sus noches escribiendo mdulos de PL / SQL para que pueda
elevarse a un plano superior de existencia. Utilize PL / SQL para resolver los problemas
de su empresa o sus clientes. En este libro, me esfuerzo para ayudar a hacer frente a
los problemas del mundo real, los tipos de problemas a los desarrolladores se
enfrentan a diario (al menos aquellos problemas que pueden resolverse con el mero
software). Para ello, he empaquetado el libro con ejemplos no slo fragmentos de
cdigo pequeo, pero los componentes de aplicaciones importantes que se pueden
aplicar inmediatamente a sus propias situaciones. Hay una buena cantidad de cdigo
en el libro en s, y mucho ms en el sitio web que lo acompaa. En varios casos, utilizo
los ejemplos de cdigo que le guiar a travs del proceso de anlisis necesario para
llegar a una solucin. De esta manera usted ver, en los trminos ms concretos, la
forma de aplicar funciones PL / SQL y aplicaciones indocumentados de esas
caractersticas a una situacin particular.

Escriba cdigo mantenible y eficiente


PL / SQL y el resto de los productos de Oracle ofrecen el potencial de la productividad
del desarrollo increble. Si usted no tiene cuidado, sin embargo, esta capacidad ser
simplemente dejar de cavar a ti mismo en un agujero ms profundo, ms oscuro de lo
que nunca has encontrado antes. Me parece que es el libro de un fracaso si slo ayud
a los programadores escribir ms cdigo en menos tiempo; Quiero ayudar a
desarrollar las habilidades y tcnicas para crear aplicaciones que se adaptan
fcilmente a los cambios y que sean fcilmente comprensibles y mantenido. Quiero
ensearte a usar estrategias integrales y arquitecturas de cdigo que le permiten
aplicar PL / SQL en poderosas formas, en general a los problemas que enfrenta.

Estructura de este libro


Oracle Database 11g, nuevas caractersticas para PL / SQL
Como se explic anteriormente, este libro incorpora todas las nuevas caractersticas
de PL / SQL en Oracle Database 11g Releases 1 y 2. Las principales caractersticas se
resumen en el captulo 1, junto con las referencias a los captulos donde estas
caractersticas se discuten en detalle.

Acerca de los Contenidos


La quinta edicin de Oracle PL / SQL de programacin se divide en seis partes:

Parte I, Programacin en PL / SQL


Empiezo desde el principio en el:
Captulo 1: de dnde PL / SQL viene? Para que es bueno? Ofrezco una revisin muy
rpida de algunas de las principales caractersticas del lenguaje PL / SQL.
Captulo 2 est diseado para ayudarle a obtener programas PL / SQL en
funcionamiento lo antes posible: contiene instrucciones claras y sencillas para la
ejecucin de cdigo PL / SQL en SQL algunos otros ambientes comunes * Plus.
Captulo 3 opiniones fundamentos del lenguaje PL / SQL: Qu hace una declaracin PL
/ SQL, una introduccin a la estructura de bloques, cmo escribir los comentarios en
PL / SQL, y as sucesivamente.

Parte II, la estructura del programa PL / SQL


Captulo 4 al Captulo 6 explorar sentencias de control condicionales (IF y CASE) y
secuenciales (Goto y NULL; bucles y la declaracin introducida para bucles en Oracle
Database 11g CONTINUAR). Y Manejo de excepciones en el lenguaje PL / SQL Esta
seccin del libro te ensear a construir bloques de cdigo que se correlacionan con
los complejos requisitos de sus aplicaciones.

Parte III, PL / SQL Program Data


Casi todos los programas que escribes se manipulan los datos, y gran parte de esos
datos ser local (definida en) su procedimiento PL / SQL o funcin. Del Captulo 7 al
Captulo 13 se concentran en los diferentes tipos de datos del programa se pueden
definir en PL / SQL, como nmeros, cadenas, fechas, marcas de tiempo, registros y
colecciones. Usted aprender acerca de los nuevos tipos de datos introducidos en
Oracle Database 11g (SIMPLE_INTEGER, FLOAT SIMPLE y DOBLE SIMPLE), as como los
muchos binarios, la fecha, y los tipos de fecha y hora introducidas en otros
lanzamientos recientes. Estos captulos abarcan tambin las diversas funciones
incorporadas proporcionadas por Oracle que le permiten manipular y modificar datos.

Parte IV, SQL en PL / SQL


Captulo 14 al Captulo 16 direccin a uno de los elementos centrales de la
construccin cdigo PL / SQL: la conexin a la base de datos subyacente, que tiene
lugar a travs del lenguaje SQL. Estos captulos muestran cmo definir transacciones
para actualizar, insertar, fusionar y eliminar tablas en la base de datos; cmo
consultar la informacin de la base de datos para su procesamiento en un programa
PL / SQL; y la forma de ejecutar las sentencias SQL de forma dinmica, utilizando SQL
dinmico nativo (NDS).

Parte V, PL / SQL Aplicaciones de construccin


Es aqu donde todo se junta. Usted sabe acerca de declarar y trabajar con variables, y
usted es un experto en el manejo de errores y la construccin de bucles. Ahora, en el
captulo 17 hasta el captulo 22, usted aprender acerca de los componentes bsicos
de las aplicaciones, que incluyen procedimientos, funciones, paquetes y disparadores,
y cmo mover la informacin dentro y fuera de los programas de PL / SQL. Captulo 20
discute la gestin de su base de PL / SQL de cdigo, incluyendo programas de pruebas
y depuracin y gestin de las dependencias; sino que tambin proporciona una visin
general de la capacidad de redefinicin basada edicin introducido en Oracle
Database 11g Release 2. Captulo 21, nuevo en la quinta edicin, se centra en cmo
se puede utilizar una variedad de herramientas y tcnicas para obtener el mejor
rendimiento de sus programas PL / SQL. Captulo 22 cubre de E/S para las tcnicas de
PL / SQL, desde DBMS_OUTPUT (escritura de salida para la pantalla) y UTL_FILE
(lectura y escritura de archivos) para UTL_MAIL (envo de correo) y UTL_HTTP
(recuperacin de datos desde una pgina web).

Parte VI, PL / SQL Temas Avanzados


Un lenguaje tan maduro y rico como PL / SQL est lleno de caractersticas que no se
puede utilizar en una base del da a da, pero que puede hacer la diferencia
fundamental entre el xito y el fracaso. Captulo 23 explora los desafos relacionados
con la seguridad que enfrentamos a medida que construimos programas PL / SQL.
Captulo 24 contiene una exploracin de la arquitectura de PL / SQL, incluyendo uso de
la memoria de PL / SQL. Captulo 25 proporciona una gua para desarrolladores de PL /
SQL que necesitan para hacer frente a los problemas de la globalizacin y la
localizacin. Captulo 26 ofrece una gua a las caractersticas orientadas a objetos de
Oracle (tipos de objetos y vistas de objetos).

Apndices A al C se resumen los detalles de sintaxis de expresiones regulares y el


nmero y la fecha de formatos.

En esta quinta edicin, los captulos sobre la invocacin de Java y cdigo C de


aplicaciones PL / SQL, que eran parte de la copia impresa cuarta edicin, se han
trasladado a la pgina web del libro.
Si eres nuevo en PL / SQL, leer este libro de principio a fin debe mejorar sus
habilidades de PL / SQL y profundizar su comprensin de la lengua. Si usted ya es un
hbil programador PL / SQL, es probable que desee que echar mano de las secciones
apropiadas para extraer tcnicas particulares de aplicacin inmediata. Ya sea que
utilice este libro como una gua didctica o como referencia, espero que le ayudar a
utilizar PL / SQL con eficacia.

Lo que este libro no cubre


Siempre que este libro es, que no contiene todo. El entorno de Oracle es enorme y
compleja, y en este libro nos hemos centrado nuestra atencin en el ncleo mismo
lenguaje PL / SQL. Los siguientes temas son, por tanto, fuera del alcance de este libro
y no estn cubiertos, excepto en forma ocasional y perifrica:

El lenguaje SQL
Supongo que usted ya tiene un conocimiento prctico del lenguaje SQL, y que sabes
cmo escribir SELECTs, UPDATEs, INSERTs, MERGEs y DELETEs.

Administracin de bases de datos Oracle


Mientras que los administradores de bases de datos (DBAs) pueden utilizar este libro
para aprender a escribir el necesario PL / SQL para construir y mantener bases de
datos, este libro no explora todos los matices del lenguaje de definicin de datos
(DDL) de Oracle SQL.

Aplicacin y puesta a punto de base de datos


No se cubren temas detallados de ajuste en este libro, aunque el captulo 21 se
discuten las muchas herramientas y tcnicas que le ayudarn a optimizar el
rendimiento de sus programas PL / SQL.

Tecnologas especficas de la herramienta Oracle independientes de PL / SQL


Este libro no trata de mostrar cmo crear aplicaciones en una herramienta como
Oracle Forms Developer, a pesar de que el lenguaje de implementacin es PL / SQL.
He optado por centrarme en las capacidades lingsticas bsicas, centradas en lo que
puede hacer con PL / SQL desde dentro de la base de datos. Sin embargo, casi todo lo
que abarca este libro es aplicable a PL / SQL dentro Forms Developer y Reports
Developer.

Qu plataforma o versin?
En general, todos los debates y ejemplos de este libro se aplican con independencia
del sistema de la mquina y / o operativo que est utilizando. En aquellos casos en los
que una caracterstica est en ningn ejemplo de la versin dependiente de por
medio, si se puede usar slo en Oracle Database 11g (o en una nota especfica, como
Oracle Database 11g Release 2) -I nota de que en el texto.

Hay muchas versiones de PL / SQL, y usted puede encontrar que usted necesita para
utilizar varias versiones en su trabajo de desarrollo. El Captulo 1 describe las distintas
versiones de PL / SQL y lo que usted debe saber acerca de ellos; consulte la seccin
"Acerca de PL/ SQL Versiones " en la pgina 10.

PARTE I
Programacin en PL / SQL

Esta primera parte de este libro introduce PL/SQL, se explica cmo crear y ejecutar
cdigo PL / SQL, y presenta los fundamentos del lenguaje. Captulo 1 hace las
preguntas fundamentales: De dnde PL / SQL viene? Para qu es bueno? Cules
son las principales caractersticas del lenguaje PL / SQL? Captulo 2 est diseado para
que usted ponga en funcionamiento programas PL / SQL lo ms rpidamente posible;
contiene instrucciones claras y sencillas para la ejecucin de cdigo PL / SQL en SQL
algunos otros ambientes comunes * Plus y. Captulo 3 responde a preguntas bsicas
sobre la estructura del lenguaje y las palabras clave: Qu hace una declaracin PL /
SQL? Cul es la estructura de bloque PL / SQL trata? Cmo puedo escribir los
comentarios en PL / SQL?

Captulo 1, Introduccin a PL / SQL


Captulo 2, Creacin y Ejecucin de PL / SQL Code
Captulo 3, Lengua Fundamentos
CAPTULO 1

Introduccin a PL / SQL
PL / SQL es sinnimo de "extensiones del lenguaje de procedimiento a la Structured
Query Language". SQL es el lenguaje ahora omnipresente tanto para consulta y
actualizacin, no importa el nombre de bases de datos relacionales. Oracle
Corporation present PL / SQL para superar algunas limitaciones en SQL y para
proporcionar una solucin de programacin ms completa para aquellos que buscaban
construir aplicaciones de misin crtica para ejecutar la base de datos Oracle. Este
captulo presenta PL / SQL, sus orgenes y sus diferentes versiones. Ofrece un resumen
rpido de PL / SQL en las ltimas versiones de Oracle, Oracle Database 11g Release 1
y Release 2. Por ltimo, se ofrece una gua de recursos adicionales para los
desarrolladores de PL / SQL y algunas palabras de consejo.

Qu es PL / SQL?
Oracle PL / SQL idioma tiene varias caractersticas que lo definen:

Es un lenguaje altamente estructurado, legible y accesible


Si usted es nuevo en la programacin, PL / SQL es un gran lugar para comenzar. Usted
encontrar que es una lengua fcil de aprender y es rico en palabras clave y la
estructura que expresan claramente la intencin de su cdigo. Si tiene experiencia en
otros lenguajes de programacin, se adaptar fcilmente a la nueva sintaxis.

Es un lenguaje estndar y porttil para el desarrollo de Oracle


Si se escribe un procedimiento PL / SQL o funcin para ejecutar desde dentro de la
base de datos de Oracle que se sienta en su computadora porttil, se puede mover
ese mismo procedimiento a una base de datos en su red corporativa y ejecutarlo all
sin ningn cambio (suponiendo compatibilidad de versiones de Oracle, en curso!).

Es un lenguaje embebido
PL / SQL no fue diseado para ser utilizado como un lenguaje independiente, pero en
lugar de ser invocado desde dentro de un entorno de acogida. As, por ejemplo, puede
ejecutar programas PL / SQL desde dentro de la base de datos (a travs, por ejemplo,
la interfaz de SQL * Plus).

Es un alto rendimiento, el lenguaje de base de datos altamente integrado


En estos das, usted tiene varias opciones cuando se trata de software de escritura
para funcionar en contra de la base de datos Oracle. Puede utilizar Java y JDBC; puede
utilizar Visual Basic y ODBC; usted puede ir con Delphi, C ++, y as sucesivamente.
Usted encontrar, sin embargo, que es ms fcil escribir cdigo altamente eficiente
para acceder a la base de datos Oracle en PL / SQL que en cualquier otro idioma. En
particular, Oracle PL / SQL ofrece ciertas mejoras especficas, tales como la
declaracin FORALL que pueden mejorar el rendimiento de base de datos en un orden
de magnitud o ms.

Mejora de la Ejecucin Autoridad y Transaccin Integridad


Un problema an ms fundamental que la portabilidad era la autoridad de ejecucin.
La base de datos y el lenguaje SQL permiten controlar estrechamente el acceso a, y
los cambios en, cualquier tabla de base de datos en particular. Por ejemplo, con el
comando GRANT, puede asegurarse de que slo ciertas funciones y los usuarios
pueden realizar una actualizacin de una tabla dada. Por otro lado, este comando
GRANT no puede garantizar que el conjunto de cambios realizados por un usuario o
aplicacin se hace correctamente. En otras palabras, la base de datos no puede
garantizar la integridad de una transaccin que se extiende por ms de una tabla,
como es comn con la mayora de las transacciones comerciales.

El lenguaje PL / SQL proporciona control y manejo estricto de las transacciones lgicas.


Una forma de PL / SQL hace esto es con la implementacin de la autoridad de
ejecucin. En lugar de conceder a una funcin o usuario la autoridad para actualizar
una tabla, usted concede privilegios slo para ejecutar un procedimiento, que controla
y proporciona acceso a las estructuras de datos subyacentes. El procedimiento es
propiedad de un esquema de base de datos Oracle diferente (el "definidor" del
programa), que, a su vez, se han otorgado los privilegios de actualizacin real en esas
tablas necesarias para llevar a cabo la transaccin. Por tanto, el procedimiento se
convierte en el "guardin" de la transaccin. La nica manera de que un programa (si
se trata de una aplicacin de formularios Oracle o un * Pro C ejecutable) puede
ejecutar la transferencia es a travs del procedimiento. De esta manera, se garantiza
la integridad general transaccin de aplicacin.

A partir de la base de datos Oracle 8i, Oracle aadi considerable flexibilidad al


modelo de autoridad ejecucin de PL / SQL, ofreciendo la clusula AUTHID. Con
AUTHID, puede continuar para ejecutar sus programas en el marco del modelo de
derechos definidor descrito anteriormente, o puede elegir AUTHID CURRENT_USER
(derechos invocador), en cuyo caso, los programas se ejecutan bajo la autoridad de la
invocacin de esquema (actual). Derechos Invoker es slo un ejemplo de cmo PL /
SQL ha madurado y ser ms flexible en los ltimos aos.

Humildes comienzos, mejora constante


PL / SQL ha recorrido un largo camino desde sus humildes comienzos. Con PL / SQL
1.0, no era raro que un desarrollador tenga que decirle a su gerente, "No se puede
hacer eso con PL / SQL." Hoy en da, esa declaracin se ha movido de hecho para
excusar. Si alguna vez se enfrenta con un requisito y se encuentra diciendo, "No hay
manera de hacer eso," por favor, no repita a su gerente. En su lugar, profundizar en el
idioma o explorar la gama de paquetes PL / SQL ofrecidos por Oracle. Es muy probable
que el PL / SQL hoy, de hecho, permitir hacer casi todo lo que tiene que hacer.

Con los aos, Oracle Corporation ha demostrado su compromiso con PL / SQL, el


lenguaje de programacin propietaria del buque insignia. Con cada nueva versin de
la base de datos, Oracle tambin ha hecho mejoras fundamentales, estables a la PL /
SQL propio idioma. Se ha aadido una gran variedad de suministrados (o integrado)
paquetes que extienden el lenguaje PL / SQL en numerosas formas y direcciones. Se
ha introducido capacidades orientadas a objetos, implementado una variedad de
estructuras de datos en matrices como, mejorada al compilador que tanto optimizar
nuestro cdigo y proporcionar advertencias sobre posibles problemas de calidad y
rendimiento, y en general la mejora de la amplitud y profundidad de la lengua.

La siguiente seccin presenta algunos ejemplos de programas PL / SQL que le


permitir familiarizarse con los conceptos bsicos de programacin PL / SQL.

Entonces esto es PL / SQL


Si usted es completamente nuevo a la programacin o va a trabajar con PL / SQL el
aprendizaje puede parecer una perspectiva intimidante. Si este es el caso, no se
preocupe! Estoy seguro de que usted encontrar que es ms fcil de lo que piensas.
Hay dos razones para mi optimismo:
Los lenguajes de programacin en general no son tan difciles de aprender, al
menos en comparacin con una segunda o tercera "lenguaje humano." La
razn? Se trata simplemente de que las computadoras no son particularmente
inteligentes (que "piensan" -Realizar operaciones rpidamente, pero no del todo
creativa). Debemos confiar en una sintaxis muy rgida con el fin de contar una
computadora lo que queremos que haga. As que el lenguaje resultante tambin
es rgido (sin excepciones!) Y por lo tanto ms fcil para nosotros para recoger.
PL / SQL realmente es un idioma fcil, en comparacin con otros lenguajes de
programacin. Se basa en un diseo muy estructurado "bloque" con diferentes
secciones, todos identificados con palabras clave explcitas, auto-documentado.
Echemos un vistazo a algunos ejemplos que demuestran algunos elementos clave de
PL /SQL estructura y funcionalidad.

La integracin con SQL


Uno de los aspectos ms importantes de PL / SQL es su estrecha integracin con SQL.
Usted no tiene que depender de ningn software de "pegamento" intermedio como
ODBC (Open Database Connectivity) o JDBC (Java Database Connectivity) para
ejecutar sentencias SQL en sus programas PL / SQL. En lugar de ello, slo tienes que
introducir el UPDATE o seleccione en el cdigo, como se muestra aqu:
1. DECLARE
2. l_book_count INTEGER;
3.
4. BEGIN
5. SELECT COUNT(*)
6. INTO l_book_count
7. FROM books
8. WHERE author LIKE '%FEUERSTEIN, STEVEN%';
9.
10. DBMS_OUTPUT.PUT_LINE (
11. 'Steven has written (or co-written) ' ||
12. l_book_count ||
13. ' books.');
14.
15. -- Oh, and I changed my name, so...
16. UPDATE books
17. SET author = REPLACE (author, 'STEVEN', 'STEPHEN')
18. WHERE author LIKE '%FEUERSTEIN, STEVEN%';
19. END;

Echemos un vistazo ms detallado a este cdigo en la siguiente tabla: ()

01 - 03 Esta es la seccin de declaracin de esta llamada " bloque


annimo" PL / SQL, en la que me declaro una variable INTEGER para
contener el nmero de libros que he autor o coautor. (Que voy a decir
mucho ms acerca de la estructura / bloque de SQL PL en el Captulo 3.)
04 BEGIN palabra clave que indica el comienzo de mi seccin de la
ejecucin de cdigo que se ejecutar cuando paso este bloque a SQL *
Plus.
05 - 08 Se ejecuta una consulta para determinar el nmero total de libros
que hay de un autor. La lnea 06 es de especial inters: la clusula INTO
se muestra aqu no es en realidad parte de la sentencia de SQL, sino que
sirve como "puente" de la base de datos a las variables locales PL / SQL.
10 - 13 Se usa el procedimiento DBMS_OUTPUT.PUT_LINE (es decir, un
procedimiento en el paquete DBMS_OUTPUT suministrado por Oracle)
para mostrar el nmero de libros, imprime en consola.
15 Este es un comentario de una sola lnea, explica el propsito de la
actualizacin.
16 - 18 He decidido cambiar la ortografa de author a 'STEPHEN', as que
realiza una actualizacin sobre la Tabla de books. Aprovecho la funcin
integrada de REPLACE para localizar todas las instancias de "Steven" y
sustituirlos por "STEPHEN".

Control y Lgica Condicional


PL / SQL ofrece una gama completa de sentencias que nos permiten muy bien el
control que las lneas de nuestros programas ejecutamos. Estas declaraciones
incluyen:

Las sentencias IF y CASE los cuales implementan lgica condicional; por ejemplo, "Si
el nmero de pginas de un libro es mayor que 1000, entonces ...."

Un completo conjunto de controles de bucle o iteracin Estos incluyen el bucle FOR, el


bucle WHILE, y el bucle simple.

La sentencia GOTO
S, PL / SQL incluso ofrece un GOTO que le permite ramifican incondicional de una
parte de su programa a otro. Eso no significa, sin embargo, que en realidad se debe
utilizar.

Aqu un procedimiento (un bloque de cdigo reutilizable que se puede llamar por su
nombre) que demuestra algunas de estas caractersticas:

1. PROCEDURE pay_out_balance (
2. account_id_in IN accounts.id%TYPE)
3. IS
4. l_balance_remaining NUMBER;
5. BEGIN
6. LOOP
7. l_balance_remaining := account_balance (account_id_in);
8.
9. IF l_balance_remaining < 1000
10. THEN
11. EXIT;
12. ELSE
13. apply_balance (account_id_in, l_balance_remaining);
14. END IF;
15. END LOOP;
16. END pay_out_balance;

Echemos un vistazo ms detallado a este cdigo en la siguiente tabla:


01 - 02 Esta es la cabecera de un procedimiento que paga el saldo de una
cuenta para cubrir cuentas pendientes. La lnea 2 es la lista de
parmetros del procedimiento, en este caso consiste en un solo valor de
entrada (el nmero de identificacin de la cuenta).
03 - 04 Esta es el rea de declaracin del procedimiento. Tenga en cuenta
que en lugar de usar una palabra clave DECLARE, como en el ejemplo
anterior, la palabra clave es IS (o AS) se utiliza para separar el
encabezado de las declaraciones.
06 15 A continuacin se muestra un ejemplo de un circuito simple. Este
bucle se basa en una sentencia EXIT (vase la lnea 11) para terminar el
bucle; Los Bucles FOR y WHILE especifican la condicin de terminacin
diferente.
07 He aqu, se llama a la funcin de balance de la cuenta para
recuperar el saldo de esta cuenta. Este es un ejemplo de una llamada a
un programa reutilizable dentro de otro programa reutilizable. Lnea 13
demuestra la vocacin de otro procedimiento dentro de este
procedimiento.
09 - 14 Aqu est una instruccin IF que se puede interpretar de la
siguiente manera: si el saldo de la cuenta ha cado por debajo de $ 1.000,
detener la asignacin de fondos para cubrir las facturas. De lo contrario,
aplique el saldo a la siguiente carga.

Cuando las cosas van mal


El lenguaje PL / SQL ofrece un poderoso mecanismo para ambos errores de
sensibilizacin y de manipulacin. En el siguiente procedimiento, puedo obtener el
nombre y el saldo de una cuenta de su identificacin. Entonces puedo comprobar para
ver si el saldo es muy bajo; si lo es, yo levanto explcitamente una excepcin, que para
mi programa de continuar:

1. PROCEDURE check_account (
2. account_id_in IN accounts.id%TYPE)
3.
4. l_balance_remaining NUMBER;
5. l_balance_below_minimum EXCEPTION;
6. l_account_name accounts.name%TYPE;
7. BEGIN
8. SELECT name
9. INTO l_account_name
10. FROM accounts
11. WHERE id = account_id_in;
12.
13. l_balance_remaining := account_balance (account_id_in);
14.
15. DBMS_OUTPUT.PUT_LINE (
16. 'Balance for ' || l_account_name ||
17. ' = ' || l_balance_remaining);
18.
19. IF l_balance_remaining < 1000
20. THEN
21. RAISE l_balance_below_minimum;
22. END IF;
23.
24. EXCEPTION
25. WHEN NO_DATA_FOUND
26. THEN
27. -- No account found for this ID
28. log_error (...);
29.
30. WHEN l_balance_below_minimum
31. THEN
32. log_error (...);
33. RAISE;
34. END;

Echemos un vistazo ms detallado a los aspectos de control de errores de este cdigo en la


siguiente tabla:

05 Declaro mi propia excepcin, llamado l_balance_below_minimum.


Oracle proporciona un conjunto de excepciones predefinidas, como
DUP_VAL_ON_INDEX, pero necesito algo especfico a mi solicitud, por lo que debe
definir yo mismo en este caso.
08 - 11 Esta consulta recupera el nombre de la cuenta. Si no hay ninguna cuenta
para esta identificacin, la base de datos plantea la excepcin
NO_DATA_FOUND predefinido, haciendo que el programa se detenga.
19 - 22 Si el saldo es muy bajo, levanto explcitamente mi propia excepcin
porque me he encontrado con un grave problema con esta cuenta.
24 La palabra clave EXCEPTION denota el final de la seccin ejecutable y el
comienzo de la seccin de excepcin en la que los errores se manejan.
25 - 28 Esta es la seccin de gestin de errores para la situacin en la que no se
encuentra la cuenta. Si NO_DATA_FOUND se plante la excepcin, est atrapado
aqu, y el error se registra con el procedimiento LOG_ERROR.
30 - 33 Esta es la seccin de control de errores para la situacin en la que el saldo
de la cuenta se ha vuelto demasiado baja (mi excepcin applicationspecific). Si
se eleva l_balance_below_minimum, est atrapado aqu, y se registra el error.
Entonces, debido a la gravedad del error, levanto la misma excepcin de nuevo,
la propagacin de ese error del procedimiento actual y en el bloque PL / SQL que
lo llam.

Captulo 6 le lleva en una extensa gira de los mecanismos de gestin de errores PL /


SQL.

Hay, por supuesto, mucho ms que se puede decir acerca de PL / SQL, razn por la
cual usted tiene cientos ms pginas de material para estudiar en este libro! Estos
ejemplos iniciales deben, sin embargo, le dar una idea de la clase de cdigo que va a
escribir con PL / SQL, algunos de sus ms importantes elementos sintcticos, y la
facilidad con que se puede escribir y leer-PL / SQL de cdigo.

Acerca PL / SQL Versiones


Cada versin de la base de datos Oracle viene con su propia versin correspondiente
de PL / SQL. A medida que usa ms versiones hasta a la fecha de PL / SQL, un conjunto
cada vez mayor de la funcionalidad estar disponible para usted. Uno de nuestros
mayores desafos como programadores PL / SQL es simplemente "mantenerse al da."
Tenemos que educar constantemente a nosotros mismos acerca de las nuevas
caractersticas de cada versin en encontrar la manera de usarlos y cmo aplicarlas a
nuestras aplicaciones y determinar qu nueva tcnicas son tan tiles que debemos
modificar las aplicaciones existentes para tomar ventaja de ellos.

Nuevas caractersticas Oracle Database 11g


Oracle Database 11g ofrece una serie de nuevas caractersticas que mejoran el
rendimiento y la facilidad de uso de PL / SQL. Tambin redondea algunos "asperezas"
de la lengua. He aqu un resumen de los cambios ms importantes para los
desarrolladores de PL / SQL (todas las funciones estn disponibles tanto Release 1 y
Release 2 a menos que se indique lo contrario).

Opcin FORCE con CREATE TYPE (Release 2 solamente)


Ahora puede especificar que desea forzar la "crear o sustituir" de un nuevo tipo,
incluso si tiene otros tipos que dependen de ella. En versiones anteriores, tal intento
levantara la excepcin ORA-02303.

Consulte el Captulo 26 para ms informacin sobre la opcin FORCE.

Funcin - Cach de resultados


Antes de la versin de Oracle Database 11g, el almacenamiento en cach basado en
el paquete ofreca la mejor opcin, ms flexible para los datos de almacenamiento en
cach para su uso en un programa PL / SQL. Lamentablemente, las circunstancias en
las que se pueden utilizar son bastante limitados, ya que la fuente de datos debe ser
esttica, y el consumo de memoria crece con cada sesin conectada a la base de
datos Oracle.

Declaracin CONTINUE
Oracle Database 11g ofrece una nueva caracterstica para los bucles: Declaracin
CONTINUE. Utilice esta declaracin para salir de la iteracin actual de un bucle e
inmediatamente continuar a la siguiente iteracin de ese bucle. Esta declaracin se
presenta en dos formas para salir, utilizando nicamente CONTINUE y utilizando la
condicional CONTINUE WHEN.

DECLARE
SALUDO VARCHAR2(500);
CONTADOR NUMBER;
BEGIN
CONTADOR := 0;
LOOP
CONTADOR := CONTADOR + 1;
CONTINUE WHEN CONTADOR = 4;

SALUDO := CONTADOR || '. Hola Mundo';

DBMS_OUTPUT.PUT_LINE(SALUDO);

IF CONTADOR = 6
THEN
EXIT;
END IF;

END LOOP;
END;

La sentencia CONTINUE se describe en detalle en el captulo 5.

Secuencias en PL/SQL expresiones


Ahora puede hacer referencia a la sequence_name.CURRVAL y elementos
sequence_name.NEXTVAL forma nativa en PL / SQL. Un SELECT FROM sys.dual ya no
es necesario.

Consulte el Captulo 14 para ms detalles.


Nueva compilacin nativa y tipos de datos SIMPLES
El compilador nativo PL / SQL ahora genera cdigo mquina nativo directamente, en
lugar de traducir cdigo PL / SQL para cdigo C y que tiene el compilador de C que
genera cdigo de mquina. Trabajar con la compilacin nativa es ahora tambin ms
sencillo: un desarrollador individual puede compilar unidades PL / SQL para la
ejecucin nativa sin ninguna intervencin por un DBA. Con el cdigo nativo compilado,
puede esperar ver una mejora sustancial en la velocidad de ejecucin, tal vez hasta en
un orden de magnitud. Con la compilacin nativa activado, tambin puede
beneficiarse de un mejor rendimiento con varios tipos nuevos, especializados
numricos de datos: SIMPLE_INTEGER, FLOAT SIMPLE, y DOBLE SIMPLE.

Compilacin nativa se describe en el captulo 24. Los nuevos tipos numricos se


describen en el Captulo 9.

NO LLEVE TANTA PRISA


Estamos casi siempre trabajando con plazos muy ajustados, o ponerse al da de un
contratiempo u otro. No tenemos tiempo que perder, y un montn de cdigo para
escribir. As que vamos a tener derecho a ella, no?
Incorrecto. Si nos sumergimos demasiado rpido en las profundidades de la
construccin de cdigo, servilmente la conversin de los requisitos a cientos, miles o
incluso decenas de miles de lneas de cdigo, vamos a terminar con un desastre total
que es casi imposible de depurar y mantener. No responda a plazos se avecina con el
pnico; que son ms propensos a cumplir con esos plazos si lo hace una planificacin
cuidadosa.

Le recomiendo a usted para resistir estas presiones de tiempo y asegrese de hacer lo


siguiente antes de empezar una nueva aplicacin, o incluso un programa especfico en
una aplicacin:

Construir casos de prueba y scripts de prueba antes de escribir su cdigo


Usted debe determinar cmo desea verificar una implementacin exitosa antes de
escribir una sola lnea de un programa. Al hacer esto, usted es ms probable conseguir
la interfaz de los programas correctos, y ser capaz de identificar a fondo de qu se
trata el programa tiene que hacer.

Establezca reglas claras sobre cmo los desarrolladores escribirn las


sentencias SQL en la aplicacin
En general, recomiendo que los desarrolladores individuales no escriban un montn de
SQL. En cambio, las consultas de una sola fila y las inserciones y actualizaciones
deben estar "escondido" detrs de pre-compilados y probado a fondo los
procedimientos y funciones (esto se llama encapsulacin de datos). Estos programas
se pueden optimizar, comprobados y mantenidos mucho ms eficaz que las
sentencias SQL (muchos de ellos redundante) repartidos por todo el cdigo.

Establezca reglas claras sobre cmo los desarrolladores manejar


excepciones en la aplicacin
Todos los desarrolladores de un equipo deben recaudar, gestionar y registrar los
errores de la misma manera. La mejor manera de hacer esto es crear un nico
paquete de control de errores que esconde todos los detalles de cmo se mantiene un
registro de errores, determina cmo se plantean excepciones y se propagan a travs
de los bloques anidados, y evitar la codificacin dura de excepciones especficas de la
aplicacin. Asegrese de que todos los desarrolladores usan este paquete y que no
escriben su propia complicado, consume tiempo, y el cdigo de control de errores
propenso a errores.
Utilice "refinamiento paso a paso" (tambin conocido como el diseo de arriba hacia
abajo) para limitar la complejidad de los requisitos que debe hacer frente en un
momento dado Si utiliza este mtodo, usted encontrar que las secciones ejecutables
de sus mdulos son ms cortos y ms fciles de entender, lo cual hace que su cdigo
sea ms fcil de mantener y mejorar con el tiempo. Mdulos locales o anidados juegan
un papel clave en el seguimiento de este principio de diseo.
No tenga miedo de pedir ayuda
Es probable que, si usted es un profesional de software, usted es una persona
bastante inteligente. Usted estudi duro, perfeccionado sus habilidades, y ahora usted
hace un buen maldito cdigo. Usted puede resolver casi cualquier problema que se
entregan, y eso hace que te sientas orgulloso. Por desgracia, su xito tambin puede
hacer que usted sea egosta, arrogante, y renuente a buscar ayuda cuando usted est
confundido. Esta dinmica es uno de los aspectos ms peligrosos y destructivos de
desarrollo de software.

Software est escrito por los seres humanos; es importante, por lo tanto, reconocer
que la psicologa humana desempea un papel clave en el desarrollo de software. Lo
siguiente es un ejemplo.

Joe, el desarrollador de alto nivel en un equipo de seis, tiene un problema con su


programa. Estudia durante horas, con el aumento de la frustracin, pero no puede
averiguar el origen del error. No quiso pensar en pedir a ninguno de sus compaeros
para ayudar porque todos tienen menos experiencia, entonces lo que hace.
Finalmente, sin embargo, l es en extremo de los ingenios "y" se da por vencido.
"Suspirando, l toma su telfono y toca una extensin:" Sandra, podras venir aqu y
echar un vistazo a mi programa? Tengo un problema que simplemente no puedo
entender. "Sandra detiene y, con la mirada rpida al programa de Joe, seala lo que
debera haber sido obvio para l hace mucho tiempo. Viva! El programa es fijo, y Joe
expresa gratitud, pero en realidad l est secretamente avergonzado.

Pensamientos como "Por qu no veo eso?" Y "Si yo slo haba pasado otros cinco
minutos haciendo mi propia depuracin me he encontrado" correr aunque la mente de
Joe. Esto es comprensible, pero tambin muy gruesa con cabeza. La conclusin es que
muchas veces no somos capaces de identificar nuestros propios problemas porque
estamos demasiado cerca de nuestro propio cdigo. A veces, todo lo que necesitamos
es una nueva perspectiva, la visin relativamente objetiva de alguien con nada en
juego. No tiene nada que ver con la antigedad, experiencia o competencia.

Le sugerimos que usted establece las siguientes directrices en su organizacin:

Admisiones de recompensa de la ignorancia


Ocultando lo que usted no sabe acerca de una aplicacin o su cdigo es muy
peligroso. Desarrollar una cultura que da la bienvenida a las preguntas y peticiones de
ayuda.

Pedir ayuda
Si no puede averiguar el origen de un fallo en 30 minutos, inmediatamente pedir
ayuda. Usted podra incluso crear un "sistema de amigos", por lo que todo el mundo
se le asigna una persona de quien se espera que se le pregunte para obtener ayuda.
No permita que usted (u otros en su grupo) ir durante horas golpeando su cabeza
contra la pared en una infructuosa bsqueda de respuestas.

Establecer un proceso de revisin de cdigo de pares formales


No deje que cualquier cdigo de ir a la garanta de la calidad o produccin sin ser ledo
y la crtica (de una manera positiva y constructiva) por uno o ms de otros
desarrolladores en su grupo.
Tome un enfoque creativo, Incluso Radical
Todos tendemos a caer en baches, en casi todos los aspectos de nuestras vidas. Las
personas son criaturas de hbitos: se aprende a escribir el cdigo de una forma; usted
asume ciertas limitaciones sobre un producto; gire a un lado las posibles soluciones
sin un examen serio, ya que slo sabe que no se puede hacer. Desarrolladores vuelven
francamente prejuicios acerca de sus propios programas, y muchas veces no de
manera positiva. A menudo se les oy decir cosas como:
"No se puede correr ms rpido que eso; es un cerdo.
"No puedo hacer que funcione de la manera que el usuario desee; que tendr
que esperar a la prxima versin.
"Si yo estuviera usando X o Y o Z del producto, sera una brisa. Pero con estas
cosas, todo es una lucha.

Pero la realidad es que su programa puede casi siempre correr un poco ms rpido. Y
la pantalla se puede, de hecho, funcionar de la manera que el usuario quiere que lo
haga. Y aunque cada producto tiene sus limitaciones, fortalezas y debilidades, nunca
debera tener que esperar a la prxima versin. No es mucho ms satisfactorio que
ser capaz de decirle a su terapeuta que abord el problema de frente, acept sin
excusas, y hecho a mano una solucin?

Cmo haces esto? Salir de los confines de sus puntos de vista endurecidos y tomar
una nueva mirada a el mundo (o tal vez slo su cubculo). Vuelva a evaluar los hbitos
de programacin que ha desarrollado. Sea creativo-paso de los mtodos tradicionales,
desde los enfoques a menudo limitados y mecnicas constantemente reforzados en
nuestros lugares de trabajo.

Intente algo nuevo: experimentar con lo que puede parecer ser un cambio radical de
la norma. Usted se sorprender de cunto va a aprender y crecer como programador y
solucionador de problemas. Con los aos, me he sorprendido a m mismo una y otra
vez con lo que es realmente alcanzable cuando dej de decir "No puedes hacer eso!" Y
en lugar de simplemente asent y murmur en voz baja, "Sabe, si lo hago de esta
manera.... "
CAPITULO 2
Creacin y Ejecucin de PL / SQL Code
Todos los programadores PL / SQL deben estar familiarizados con algunas tareas
operativas bsicas:
Navegacin a la base de datos.
Crear y editar cdigo PL / SQL fuente.
Compile el cdigo PL / SQL fuente, corregir los errores de cdigo (y,
opcionalmente, advertencias) anotaron por el compilador.
Ejecute el programa compilado de algn medio ambiente.
Examinar los resultados de la ejecucin del programa (salida de pantalla, los
cambios en las tablas, etc.). en las tablas, etc.).

A diferencia de idiomas independientes tales como C, PL / SQL est alojado dentro de


un entorno de ejecucin de Oracle (que es un "lenguaje integrado"), por lo que hay
algunos matices inesperados a todas estas tareas: algunos son agradables sorpresas;
otros, consternaciones. Este captulo le mostrar cmo realizar estas tareas en el nivel
ms bsico (utilizando SQL * Plus), con un breve recorrido por los matices. Concluye
con algunos ejemplos drive-by de realizar llamadas de PL / SQL desde el interior de
varios entornos de programacin comunes, tales como PHP y C. Para obtener
informacin ms detallada acerca de la compilacin y otras tareas ms avanzadas,
consulte el Captulo 20.

Navegacin por la base de datos


Todo el mundo que opta por escribir programas PL / SQL lo hace para trabajar con el
contenido de una base de datos Oracle. Est, por lo tanto, no es de extraar que usted
necesita saber cmo "moverse" la base de datos de Oracle, donde el cdigo se va a
ejecutar. Usted tendr que examinar las estructuras de datos (tablas, columnas,
secuencias, tipos definidos por el usuario, etc.) en la base de datos, as como las
firmas de todos los programas almacenados existentes se le invoca. Es probable que
tambin necesitan saber algo sobre el contenido real (columnas, restricciones, etc.) de
las Tablas.

Hay dos enfoques distintos que puede tomar para la navegacin de base de datos:

1. Utilice un IDE (entorno de desarrollo integrado, un nombre elegante para un


editor de fantasa) como Toad, SQL Developer, PL / SQL Developer, SQL
Navigator, etc. Todos ellos ofrecen navegadores visuales que apoyan apuntar y
hacer clic de navegacin.
2. Los guiones se ejecutan en un entorno de lnea de comandos como SQL * Plus
que consulta los contenidos de datos vistas del diccionario como ALL_OBJECTS y
USER_OBJECTS (demostraron ms adelante en este captulo).

Recomiendo encarecidamente utilizar un IDE grfico. Si usted ha estado cerca de


Oracle el tiempo suficiente, puede que ser adicto a y bastante productiva con las
secuencias de comandos. Para el resto de nosotros, una interfaz grfica es mucho ms
fcil trabajar con y entender-y mucho ms productiva de lo guiones.

Captulo 20 tambin ofrece ejemplos del uso de varias vistas del diccionario de datos
para trabajar con su base de cdigo PL / SQL.

Creacin y edicin de cdigo fuente


En estos das, los programadores tienen muchas, muchas opciones para los editores
de cdigo, desde el editor de texto simple a los entornos de desarrollo ms exticos. Y
ellos hacen muy diferentes opciones. Uno de los autores de este libro, Steven
Feuerstein, es bastante adicto a Toad IDE. l es un usuario muy tpico, familiarizado
con tal vez slo el 10% de toda la funcionalidad y botones, pero depender en gran
medida de esas caractersticas. Bill Pribyl, por otro lado, se describe como "una
especie de bicho raro en que me gusta usar un editor de texto bastante sencillo
escribir programas PL / SQL. Mi nica concesin es que sangra de forma automtica
cdigo mientras escribo, y muestra las palabras clave, comentarios, literales y
variables de diferentes colores ".
Editores del programador ms sofisticado harn mucho ms de la sangra y la
coloracin de palabras clave; tambin ofrecern depuradores grficas, realice la
terminacin de palabras clave, vista previa subprograma de paquetes a medida que
escribe su nombre, parmetros de visualizacin de subprogramas, y resaltar la fila y
columna especfica en la que el compilador informa de un error. Algunos editores
tambin tienen caractersticas "Hipervinculacin" que le permiten navegar
rpidamente a la declaracin de una variable o subprograma. Pero la necesidad de
que la mayora de estas caractersticas es comn en muchos lenguajes compilados.

Lo que es nico acerca de PL / SQL es el hecho de que el cdigo fuente de los


programas almacenados debe ser cargado en la base de datos antes de que pueda ser
compilado y ejecutado. Esta copia de la base de datos por lo general puede ser
recuperada por un programador que tiene permisos suficientes. Podemos reconocer
de inmediato una serie de cuestiones de gestin de cdigo, incluyendo:
Cmo y dnde encontrar un programador de la copia "original" de un
programa almacenado?
Vive en el disco o lo hace solo viven en la base de datos?
Cmo y con qu frecuencia realizar copias de seguridad?
Cmo gestionamos el acceso multi-desarrollador del cdigo? Es decir, usamos
un sistema de software de control de versiones?

Estas preguntas deben ser respondidas antes de comenzar el desarrollo de una


aplicacin, lo ms preferiblemente al tomar decisiones sobre qu herramientas de
software harn este trabajo para usted. Si bien no existe un conjunto nico de
herramientas o procesos que funcionan mejor para todos los equipos de desarrollo, yo
puedo decir que siempre guardo el cdigo fuente "original" en los archivos, le
recomiendo encarecidamente que no utilice el RDBMS como su repositorio de cdigo.
En la siguiente seccin voy a demostrar cmo se puede utilizar SQL * Plus para llevar
a cabo muchas tareas bsicas para el desarrollo de PL / SQL. Estas mismas tareas se
pueden completar en su IDE.

SQL * Plus
Oracle SQL * Plus proporciona un intrprete de lnea de comandos de SQL y PL / SQL.
Es decir, se acepta declaraciones por parte del usuario, los enva al servidor de Oracle,
y muestra los resultados. A menudo vilipendiado por su interfaz de usuario, SQL * Plus
es una de mis herramientas favoritas de Oracle. De hecho, me gusta la falta de
artilugios de fantasa y mens. Irnicamente, cuando empec a usar Oracle (alrededor
de 1986), el predecesor de este producto fue nombrado audazmente UFI fcil de usar
interfaz. Dos dcadas ms tarde, incluso la ltima versin de SQL * Plus sigue siendo
poco probable que gane algn premio de facilidad de uso, pero al menos no se
bloquea con mucha frecuencia. Oracle, a lo largo de los aos, ofrecido diferentes
versiones de SQL * Plus.

SERVEROUTPUT
Generalmente pongo el comando SERVEROUTPUT en mi archivo de inicio (ver "Carga su
propio entorno personalizado automticamente en el arranque" en la pgina 35),
haciendo que se habilitar hasta que ocurra una de las siguientes:
Desconecte, cierre la sesin, o de otra manera terminar su sesin.
Se establece explcitamente SERVEROUTPUT OFF.
La base de datos Oracle descarta estado de la sesin, ya sea a peticin o
debido a un error de compilacin (ver "Unidades Programa invlida Compilar"
en la pgina 731).
En las versiones de Oracle a travs de la base de datos Oracle9i Release 2, se
emite una nueva sentencia CONNECT; en versiones posteriores, SQL * Plus
automticamente vuelve a ejecutar el archivo de inicio despus de cada
CONNECT.

Al entrar en sentencias SQL o PL / SQL en la consola o pseudo-GUI SQL * Plus, el


programa asigna un nmero a cada lnea despus de la primera. Hay dos beneficios a
los nmeros de lnea: primero, le ayuda a designar qu lnea para editar con el built-in
editor de lnea (que en realidad se podra utilizar un da); y en segundo lugar, si la
base de datos detecta un error en el cdigo, por lo general informar del error
acompaado de un nmero de lnea. Vas a tener un montn de oportunidades para
ver que el comportamiento en la accin.
A decir de SQL * Plus que haya terminado de entrar en un comunicado PL / SQL, debe
incluir por lo general una barra diagonal (vase la lnea 4 en el ejemplo anterior).
Aunque en su mayora inofensivas, la barra tiene varias caractersticas importantes:

El significado de la barra es "ejecutar la declaracin ms recientemente


introducido," independientemente de si la declaracin es SQL o PL / SQL.
La barra es un comando nico para SQL * Plus; que no es parte del lenguaje PL /
SQL, ni es parte de SQL.
Debe aparecer en una lnea por s mismo; no hay otros comandos se pueden
incluir en la lnea.
En la mayora de las versiones de SQL * Plus antes de Oracle9i Database, si
preceder accidentalmente la barra con cualquier espacio, que no funciona! A
partir de Oracle 9i base de datos, SQL * Plus convenientemente vistas a
espacios en blanco. Arrastrando el espacio no importa en cualquier versin.

Ejemplo:
SQL> SET SERVEROUTPUT ON
SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE('Hey look, Ma!');
3 END;
4/
Hey look, Ma!
PL/SQL procedure successfully completed.
SQL>

Como una caracterstica de conveniencia, SQL * Plus ofrece a los usuario de PL / SQL
un comando EXECUTE, lo que ahorra escribir el BEGIN, END, y barra final. As que lo
siguiente es equivalente al programa corto corr antes:

EXECUTE DBMS_OUTPUT.PUT_LINE('Hey look, Ma!');

Un punto y coma final es opcional, pero prefiero omitirlo. Como con la mayora de los
comandos SQL * Plus, ejecute pueden abreviada y es entre maysculas y minsculas,
por lo que ms uso interactivo se reduce a:

EXEC dbms_output.put_line('Hey look, Ma!')

EJECUCIN DE UNA SECUENCIA DE COMANDOS


Casi cualquier declaracin que funciona de forma interactiva en SQL * Plus se puede almacenar
en un archivo para su ejecucin repetida. La forma ms fcil de ejecutar una secuencia de
comandos es utilizar el SQL * Plus "arroba" (@) command. Por ejemplo, este se ejecuta todos
los comandos del abc.pkg archivo:

SQL> @abc.pkg

The file must live in my current directory (or on SQLPATH somewhere).

If you prefer words to at-signs, you can use the equivalent START command:

SQL> START abc.pkg


and you will get identical results. Either way, this command causes SQL*Plus to do the
following:

1. Open the file named abc.pkg.


2. Sequentially attempt to execute all of the SQL, PL/SQL, and SQL*Plus statements in the file.
3. When complete, close the file and return you to the SQL*Plus prompt (unless the file invokes
the EXIT statement, which will cause SQL*Plus to quit).

For example:
SQL> @abc.pkg
Package created.
Package body created.
SQL>
The default behavior is to display only the output from the individual statements on the screen;
if you want to see the original source from the file, use the SQL*Plus command SET ECHO ON.

In my example, Ive used a filename extension of pkg. If I leave off the extension, this is what
happens:

SQL> @abc
SP2-0310: unable to open file "abc.sql"

To address this problem, Oracle created the @@ command. This double at-sign means during
this call, pretend I have changed the current directory to be that of the currently executing
file. So, the preferred way of writing the calls in the abc.pkg script is:

REM Filename: abc.pkg


@@abc.pks
@@abc.pkb

Now I get:

C:\BOB\FILES> sqlplus
...
SQL> @/files/src/release/1.0/abc.pkg
Package created.
Package body created.

just as I was hoping.

OTRAS TAREAS DE SQL * PLUS


Hay docenas de comandos especficos para SQL * Plus, pero no tengo espacio para
mencionar slo unos cuantos ms que son particularmente importantes o
particularmente confuso. Para un tratamiento a fondo de este producto venerable,
obtener una copia del libro de Jonathan Gennick Oracle SQL * Plus: The Definitive
Guide (O'Reilly) o, para una referencia rpida, su Oracle SQL * Plus Pocket Reference
(O'Reilly).

Establecer sus preferencias


Usted puede cambiar el comportamiento de SQL * Plus, como usted puede con
muchos entornos de lnea de comandos, al cambiar el valor de algunos de su base de
variables y parmetros. Usted ya ha visto un ejemplo, la sentencia SET serveroutput.
Hay muchas opciones en el comando SET de SQL * Plus, como SET SUFFIX (cambia
la extensin del archivo por defecto) y SET LINESIZE n (establece el nmero mximo
de caracteres en cada lnea que aparece antes de envolver). Para ver todos los valores
establecidos aplicables a la sesin actual, utilice el comando:

SQL> SHOW ALL

SQL * Plus tambin puede crear y manipular sus propias variables en memoria, y se
deja de lado algunas variables especiales que afectarn su comportamiento. En
realidad, hay dos tipos diferentes de variables en SQLPlus: define y variables se unen.
Para asignar un valor a una variable DEFINE, puede utilizar el comando DEFINE:

SQL> DEFINE x = "the answer is 42"

Para ver el valor de x, especifique:

SQL> DEFINE x
DEFINE X = "the answer is 42" (CHAR)

Anda mungkin juga menyukai