fbpx
Wikipedia

PL/SQL

PL/SQL (Procedural Language/Structured Query Language) es un lenguaje de programación incrustado en Oracle.[1]

PL/SQL
Información general
Tipo de programa lenguaje de programación
Lanzamiento inicial 1992
Enlaces
Sitio web oficial

PL/SQL soportará todas las consultas, ya que la manipulación de datos que se usa es la misma que en SQL, incluyendo nuevas características:

  • El manejo de variables.
  • Estructuras modulares.
  • Estructuras de control de flujo y toma de decisiones.
  • Control de excepciones.

El lenguaje PL/SQL está incorporado en:

  • Servidor de la base de datos.
  • Herramientas de Oracle (Forms, Reports, ...).

En un entorno de base de datos los programadores pueden construir bloques PL/SQL para utilizarlos como procedimientos o funciones, o bien pueden escribir estos bloques como parte de scripts SQL*Plus.

Los programas o paquetes de PL/SQL se pueden almacenar en la base de datos como otro objeto, y todos los usuarios que estén autorizados tienen acceso a estos paquetes. Los programas se ejecutan en el servidor para ahorrar recursos a los clientes.

Elementos de PL/SQL

Tipos de datos

A continuación se muestra un listado de los tipos de datos disponibles en Oracle / PLSQL. Hemos tratado de diferenciar los tipos de datos entre las versiones de Oracle 8i y Oracle 9i.

Tipo de dato / Sintaxis Oracle 8i Oracle 9i Descripción
decimal(p, e)

dec(p, e)

La precisión máxima es de 38 dígitos. Donde p es la precisión y e la escala.

Por ejemplo: decimal(3,1) es un número de 3 dígitos y solo uno es decimal.

double precision
float La precisión máxima es de 38 decimales.
int
integer
numeric(p, e)

number(p, e)

La precisión máxima es de 38 dígitos. Donde p es la precisión y e la escala.

Por ejemplo: numeric(5,2) es un número que tiene 5 dígitos antes del decimal y 2 dígitos después del decimal.

real
smallint
char (tamaño) Hasta 32767 bytes en PLSQL.

Hasta 2000 bytes en Oracle 8i/9i.

Donde tamaño es el número de caracteres a almacenar. Son cadenas de ancho fijo. Se rellena con espacios.
varchar2 (tamaño) Hasta 32767 bytes en PLSQL.

Hasta 4000 bytes en Oracle 8i/9.i

Donde tamaño es el número de caracteres a almacenar. Son cadenas de ancho variable.
long Hasta 2 gigabytes. Son cadenas de ancho variable.
raw Hasta 32767 bytes en PLSQL.

Hasta 2000 bytes en Oracle 8i/9i.

Son cadenas binarias de ancho variable.
long raw Hasta 2 gigabytes. Son cadenas binarias de ancho variable.
date Una fecha entre el 1 de enero de 4712 a. C. y el 31 de diciembre de 9999 d. C.
timestamp (fractional seconds precision) No soportado por Oracle 8i. fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6) Incluye año, mes día, hora, minutos y segundos.

Por ejemplo: timestamp(6)

timestamp (fractional seconds precision) with time zone No soportado por Oracle 8i. fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6) Incluye año, mes día, hora, minutos y segundos; con un valor de desplazamiento de zona horaria.

Por ejemplo: timestamp(5) with time zone

timestamp (fractional seconds precision) with local time zone No soportado por Oracle 8i. fractional seconds precision debe ser un número entre 0 y 9. (El valor por defecto es 6) Incluye año, mes día, hora, minutos y segundos; con una zona horaria expresada como la zona horaria actual.

Por ejemplo: timestamp(4) with local time zone

interval year (year precision) to month No soportado por Oracle 8i. year precision debe ser un número entre 0 y 9. (El valor por defecto es 2) Período almacenado en años y meses.

Por ejemplo: interval year(4) to month

interval day (day precision) el bloque en el fichero de la base de datos;

RRRR es la fila del bloque; FFFFF es el fichero de la base de datos.

Datos binarios de ancho fijo. Cada registro de la base de datos tiene una dirección física o rowid.
urowid [tamaño] Hasta 2000 bytes. Rowid universal. Donde tamaño es opcional.
boolean Válido en PLSQL, este tipo de datos no existe en Oracle 8i/9i.
nchar (tamaño) Hasta 32767 bytes en PLSQL. Hasta 2000 bytes en Oracle 8i/9i. Donde tamaño es el número de caracteres a almacenar. Cadena NLS de ancho fijo.
nvarchar2 (tamaño) Hasta 32767 bytes en PLSQL. Hasta 4000 bytes en Oracle 8i/9i. Donde tamaño es el número de caracteres a almacenar. Cadena NLS de ancho variable.
bfile Hasta 4 gigabytes. Localizadores de archivo apuntan a un objeto binario de solo lectura fuera de la base de datos.
blob Hasta 4 gigabytes. Localizadores LOB apuntan a un gran objeto binario dentro de la base de datos.
clob Hasta 4 gigabytes. Localizadores LOB apuntan a un gran objeto de caracteres dentro de la base de datos.
nclob Hasta 4 gigabytes. Localizadores LOB apuntan a un gran objeto NLS de caracteres dentro de la base de datos.

Identificadores

Un identificador es un nombre que se le pone a un objeto que interviene en un programa, que puede ser variable, constante, procedimientos, excepciones, cursores... Debe tener un máximo de 30 caracteres que empiece siempre por una letra, y puede contener letras, números, los símbolos $, #, _, y mayúsculas y minúsculas indiferentemente. Los identificadores no pueden ser palabras reservadas (SELECT, INSERT, DELETE, UPDATE, DROP).

Operadores

Operador de asignación := (dos puntos + igual)
Operadores aritméticos + (suma)

- (resta)

* (multiplicación)

/ (división)

** (exponente)

Operadores relacionales o de comparación = (igual a)

<>, != (distinto de)

< (menor que)

> (mayor que)

>= (mayor o igual a)

<= (menor o igual a)

Operador de concatenación ||
Comentarios /* comentario de una o más líneas */

-- comentario de una línea

Variables

Las variables son nombres para procesar los elementos de los datos. Declaración:

Nombre_variable tipo [NOT NULL] [:= valor | DEFAULT valor] 
:= y DEFAULT son lo mismo. Si ponemos NOT NULL es obligatorio inicializar la variable.

Ejemplos:

num_dep number(2) NOT NULL :=20 nom_emple varchar2(15) default Pedro 

También se puede definir una variable a partir de un campo mediante los atributos %TYPE y %ROWTYPE, con esto damos el tipo y longitud a la variable de otra variable u objeto ya definido.

%TYPE es la que se utiliza normalmente, %ROWTYPE es para claves de registro. El NOT NULL y el valor inicial no se heredan, solo el tipo de dato y longitud de ese dato.

Por ejemplo:

num_dep emple.dept_no%type 

Constantes

Las constantes son como las variables pero no puede modificarse su valor. Se declaran de la siguiente manera:

nombre_constante CONSTANT tipo_de_dato := valor 

Por ejemplo, el IVA es un valor fijo, y para declararlo lo haríamos de la siguiente manera: por ejemplo,

Imp_iva constant number(3,1) := 12,5 

Bloque PL/SQL

Bloque es la unidad de estructura básica en los programas PL/SQL. Supone una mejora en el rendimiento, pues se envían los bloques completos al servidor para ser procesados en lugar de enviar cada secuencia SQL.

Partes de un bloque:

  • Zona de declaraciones: zona opcional. Se declaran los objetos locales (variables, constantes...).
  • Zona de instrucciones: zona obligatoria.
  • Zona de tratamiento de excepciones: zona opcional. Se tratan excepciones en el programa.

Forma de crear un bloque:

[ DECLARE | IS / AS ] <declaraciones> BEGIN <instrucciones> [ EXCEPTION ] <tratamiento de excepciones> END; / 

La barra "/" que va al final del bloque es opcional y se utiliza para verificar la sintaxis del bloque antes de que este sea ejecutado.

Tipos de bloques

Anónimo (sin nombre)

Siempre comienza con DECLARE o directamente con BEGIN.
Ejemplo 1;
BEGIN DBMS_OUTPUT.PUT_LINE (Hola Mundo); END; / 
DBMS_OUTPUT es un depurador de Oracle que sirve para visualizar cualquier cosa, pero antes lo debemos tener activado (en SQL*plus, se activa con el comando SET SERVEROUTPUT ON):
DECLARE fecha date; BEGIN select sysdate into fecha from dual; dbms_output.put_line (to_char(fecha, 'day", "dd" de "month" de "yyyy", a las "hh24:mi:ss')); END; / 

Subprogramas (tienen nombre)

Se pueden almacenar en la base de datos.
Existen dos tipos de subprogramas: Procedimientos (PROCEDURE) y Funciones (FUNCTION)

Procedimientos

Los procedimientos tienen la utilidad de fomentar la reutilización de programas que se usan comúnmente. Una vez compilado, queda almacenado en la base de datos (por eso es también llamado 'Procedimiento almacenado') y puede ser utilizado por múltiples aplicaciones.

La sintaxis es la siguiente

 CREATE [OR REPLACE] PROCEDURE nombre_procedimiento [nombre_parametro modo tipodatos_parametro ] IS | AS bloque de código 
Donde "modo" puede contener los valores IN, OUT, IN OUT. Por defecto tiene el valor IN si no se pone nada. IN indica que el parámetro es de entrada y no se podrá modificar. OUT indica que el parámetro es de salida con lo que el procedimiento devolverá un valor en él. IN OUT indica que el parámetro es de entrada/salida. Con lo que al llamar al procedimiento se le dará un valor que luego podrá ser modificado por el procedimiento y devolver este nuevo valor.
"tipodatos_parametro indica el tipo de datos que tendrá el parámetro según lo indicado en Tipos de datos Oracle/PLSQL

Para borrar un procedimiento almacenado de la base de datos

 DROP PROCEDURE nombre_procedimiento 

Para utilizar un procedimiento almacenado de la base de datos

Simplemente se lo llama desde un bloque anónimo (desde la línea de comandos), previamente habiendo inicializado el/los parametro/s (en caso que existan).
DECLARE nombre_parametro tipodatos_parametro; BEGIN nombre_parametro tipodatos_parametro := valor_de_inicializacion; nombre_procedimiento (nombre_parametro => nombre_parametro); END; / 

Funciones

Una función es un bloque de código PL/SQL que tiene las mismas características que un procedimiento almacenado. La diferencia estriba que una función devuelve un valor al retornar. Al devolver un valor puede ser llamada como parte de una expresión.

La sintaxis sería

 CREATE [OR REPLACE] FUNCTION nombre_función [nombre_parámetro modo tipodatos_parametro ] RETURN tipodatos_retorno IS | AS bloque de código 
Donde "modo" puede contener los valores IN, OUT, IN OUT. Por defecto tiene el valor IN si no se pone nada. IN indica que el parámetro es de entrada y no se podrá modificar. OUT indica que el parámetro es de salida con lo que la función devolverá un valor en él. IN OUT indica que el parámetro es de entrada/salida. Con lo que al llamar a la función se le dará un valor que luego podrá ser modificado por la misma y devolver este nuevo valor. Sin embargo, en este caso solo tendría sentido (por el concepto de función en sí mismo) declarar parámetros del tipo IN y devolver el valor como retorno de la función.
"tipodatos_parametro" y "tipodatos_retorno" indican el tipo de datos que tendrá el parámetro y el valor de retorno de la función respectivamente según lo indicado en Tipos de datos Oracle/PLSQL

Para borrar una función de la base de datos

 DROP FUNCTION nombre_función 

Los procedimientos y funciones se pueden agrupar en unas estructuras llamadas Paquetes.

Paquetes

Se usan para agrupar procedimientos y funciones. Facilitan la descomposición modular y el mantenimiento.

Constan de dos partes: la especificación o prototipo y el cuerpo.

Especificación

Se declaran los elementos públicos que componen el paquete, es decir, variables, funciones y procedimientos que serán accesibles desde fuera del paquete. De las funciones y procedimientos solo indicamos la cabecera, no el cuerpo.
CREATE [OR REPLACE] PACKAGE nombrePaquete IS|AS variables, constantes, cursores, etc (públicos) cabecera de procedimientos y funciones END nombrePaquete; 

TRIGGER

Un trigger o disparador se ejecuta ante un determinado evento de manera automática. Generalmente se utilizan para garantizar que una determinada acción siempre se realiza después de realizar una tarea determinada. Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo puede dar lugar a dependencias difíciles de mantener. Además se deben tener muy claros las restricciones de integridad para evitar problemas.

La sintaxis sería

A nivel de sentencia:

 CREATE [OR REPLACE] TRIGGER nombre_trigger momento_ejecución evento [evento] ON nombre_tabla bloque PLSQL; 

A nivel de registro:

 CREATE [OR REPLACE] TRIGGER nombre_trigger momento_ejecución evento [evento] ON nombre_tabla [REFERENCING OLD AS old | NEW AS new] FOR EACH ROW [WHEN condición] bloque PLSQL; 
Donde "momento_ejecución" indica cuando se ejecuta el trigger automáticamente. Puede contener los valores BEFORE o AFTER.
"evento" indica la operación que provoca la ejecución de este bloque. Puede contener los valores INSERT, UPDATE o DELETE.
"old" indica el nombre que se le da al registro con los valores antiguos que se tenían antes de la ejecución de la operación que activó el trigger. Mientras que "new" indica el valor que tiene actualmente después de dicha operación.
Con la cláusula "WHEN" se puede indicar una restricción que haga que el trigger se ejecute o no. Por ejemplo se puede indicar que el trigger se ejecute solo si el campo "campo1" de la tabla tiene un valor mayor que 50.
La cláusula "FOR EACH ROW" indica que el trigger es a nivel de registro.

Para eliminar un trigger:

 DROP TRIGGER nombre_trigger 

Referencias

  1. «What Is PL/SQL? Introduction & Architecture» (en inglés). Consultado el 2 de enero de 2020. 
  •   Datos: Q41574
  •   Libros y manuales: Oracle/PL/SQL

procedural, language, structured, query, language, lenguaje, programación, incrustado, oracle, información, generaltipo, programalenguaje, programaciónlanzamiento, inicial1992enlacessitio, oficial, editar, datos, wikidata, soportará, todas, consultas, manipula. PL SQL Procedural Language Structured Query Language es un lenguaje de programacion incrustado en Oracle 1 PL SQLInformacion generalTipo de programalenguaje de programacionLanzamiento inicial1992EnlacesSitio web oficial editar datos en Wikidata PL SQL soportara todas las consultas ya que la manipulacion de datos que se usa es la misma que en SQL incluyendo nuevas caracteristicas El manejo de variables Estructuras modulares Estructuras de control de flujo y toma de decisiones Control de excepciones El lenguaje PL SQL esta incorporado en Servidor de la base de datos Herramientas de Oracle Forms Reports En un entorno de base de datos los programadores pueden construir bloques PL SQL para utilizarlos como procedimientos o funciones o bien pueden escribir estos bloques como parte de scripts SQL Plus Los programas o paquetes de PL SQL se pueden almacenar en la base de datos como otro objeto y todos los usuarios que esten autorizados tienen acceso a estos paquetes Los programas se ejecutan en el servidor para ahorrar recursos a los clientes Indice 1 Elementos de PL SQL 1 1 Tipos de datos 1 2 Identificadores 1 3 Operadores 1 4 Variables 1 5 Constantes 1 6 Bloque PL SQL 2 Tipos de bloques 2 1 Anonimo sin nombre 2 2 Subprogramas tienen nombre 2 3 Procedimientos 2 4 Funciones 2 5 Paquetes 2 5 1 Especificacion 2 6 TRIGGER 3 ReferenciasElementos de PL SQL EditarTipos de datos Editar A continuacion se muestra un listado de los tipos de datos disponibles en Oracle PLSQL Hemos tratado de diferenciar los tipos de datos entre las versiones de Oracle 8i y Oracle 9i Tipo de dato Sintaxis Oracle 8i Oracle 9i Descripciondecimal p e dec p e La precision maxima es de 38 digitos Donde p es la precision y e la escala Por ejemplo decimal 3 1 es un numero de 3 digitos y solo uno es decimal double precisionfloat La precision maxima es de 38 decimales intintegernumeric p e number p e La precision maxima es de 38 digitos Donde p es la precision y e la escala Por ejemplo numeric 5 2 es un numero que tiene 5 digitos antes del decimal y 2 digitos despues del decimal realsmallintchar tamano Hasta 32767 bytes en PLSQL Hasta 2000 bytes en Oracle 8i 9i Donde tamano es el numero de caracteres a almacenar Son cadenas de ancho fijo Se rellena con espacios varchar2 tamano Hasta 32767 bytes en PLSQL Hasta 4000 bytes en Oracle 8i 9 i Donde tamano es el numero de caracteres a almacenar Son cadenas de ancho variable long Hasta 2 gigabytes Son cadenas de ancho variable raw Hasta 32767 bytes en PLSQL Hasta 2000 bytes en Oracle 8i 9i Son cadenas binarias de ancho variable long raw Hasta 2 gigabytes Son cadenas binarias de ancho variable date Una fecha entre el 1 de enero de 4712 a C y el 31 de diciembre de 9999 d C timestamp fractional seconds precision No soportado por Oracle 8i fractional seconds precision debe ser un numero entre 0 y 9 El valor por defecto es 6 Incluye ano mes dia hora minutos y segundos Por ejemplo timestamp 6 timestamp fractional seconds precision with time zone No soportado por Oracle 8i fractional seconds precision debe ser un numero entre 0 y 9 El valor por defecto es 6 Incluye ano mes dia hora minutos y segundos con un valor de desplazamiento de zona horaria Por ejemplo timestamp 5 with time zonetimestamp fractional seconds precision with local time zone No soportado por Oracle 8i fractional seconds precision debe ser un numero entre 0 y 9 El valor por defecto es 6 Incluye ano mes dia hora minutos y segundos con una zona horaria expresada como la zona horaria actual Por ejemplo timestamp 4 with local time zoneinterval year year precision to month No soportado por Oracle 8i year precision debe ser un numero entre 0 y 9 El valor por defecto es 2 Periodo almacenado en anos y meses Por ejemplo interval year 4 to monthinterval day day precision el bloque en el fichero de la base de datos RRRR es la fila del bloque FFFFF es el fichero de la base de datos Datos binarios de ancho fijo Cada registro de la base de datos tiene una direccion fisica o rowid urowid tamano Hasta 2000 bytes Rowid universal Donde tamano es opcional boolean Valido en PLSQL este tipo de datos no existe en Oracle 8i 9i nchar tamano Hasta 32767 bytes en PLSQL Hasta 2000 bytes en Oracle 8i 9i Donde tamano es el numero de caracteres a almacenar Cadena NLS de ancho fijo nvarchar2 tamano Hasta 32767 bytes en PLSQL Hasta 4000 bytes en Oracle 8i 9i Donde tamano es el numero de caracteres a almacenar Cadena NLS de ancho variable bfile Hasta 4 gigabytes Localizadores de archivo apuntan a un objeto binario de solo lectura fuera de la base de datos blob Hasta 4 gigabytes Localizadores LOB apuntan a un gran objeto binario dentro de la base de datos clob Hasta 4 gigabytes Localizadores LOB apuntan a un gran objeto de caracteres dentro de la base de datos nclob Hasta 4 gigabytes Localizadores LOB apuntan a un gran objeto NLS de caracteres dentro de la base de datos Identificadores Editar Un identificador es un nombre que se le pone a un objeto que interviene en un programa que puede ser variable constante procedimientos excepciones cursores Debe tener un maximo de 30 caracteres que empiece siempre por una letra y puede contener letras numeros los simbolos y mayusculas y minusculas indiferentemente Los identificadores no pueden ser palabras reservadas SELECT INSERT DELETE UPDATE DROP Operadores Editar Operador de asignacion dos puntos igual Operadores aritmeticos suma resta multiplicacion division exponente Operadores relacionales o de comparacion igual a lt gt distinto de lt menor que gt mayor que gt mayor o igual a lt menor o igual a Operador de concatenacion Comentarios comentario de una o mas lineas comentario de una lineaVariables Editar Las variables son nombres para procesar los elementos de los datos Declaracion Nombre variable tipo NOT NULL valor DEFAULT valor y DEFAULT son lo mismo Si ponemos NOT NULL es obligatorio inicializar la variable Ejemplos num dep number 2 NOT NULL 20 nom emple varchar2 15 default Pedro Tambien se puede definir una variable a partir de un campo mediante los atributos TYPE y ROWTYPE con esto damos el tipo y longitud a la variable de otra variable u objeto ya definido TYPE es la que se utiliza normalmente ROWTYPE es para claves de registro El NOT NULL y el valor inicial no se heredan solo el tipo de dato y longitud de ese dato Por ejemplo num dep emple dept no type Constantes Editar Las constantes son como las variables pero no puede modificarse su valor Se declaran de la siguiente manera nombre constante CONSTANT tipo de dato valor Por ejemplo el IVA es un valor fijo y para declararlo lo hariamos de la siguiente manera por ejemplo Imp iva constant number 3 1 12 5 Bloque PL SQL Editar Bloque es la unidad de estructura basica en los programas PL SQL Supone una mejora en el rendimiento pues se envian los bloques completos al servidor para ser procesados en lugar de enviar cada secuencia SQL Partes de un bloque Zona de declaraciones zona opcional Se declaran los objetos locales variables constantes Zona de instrucciones zona obligatoria Zona de tratamiento de excepciones zona opcional Se tratan excepciones en el programa Forma de crear un bloque DECLARE IS AS lt declaraciones gt BEGIN lt instrucciones gt EXCEPTION lt tratamiento de excepciones gt END La barra que va al final del bloque es opcional y se utiliza para verificar la sintaxis del bloque antes de que este sea ejecutado Tipos de bloques EditarAnonimo sin nombre Editar Siempre comienza con DECLARE o directamente con BEGIN Ejemplo 1 BEGIN DBMS OUTPUT PUT LINE Hola Mundo END DBMS OUTPUT es un depurador de Oracle que sirve para visualizar cualquier cosa pero antes lo debemos tener activado en SQL plus se activa con el comando SET SERVEROUTPUT ON DECLARE fecha date BEGIN select sysdate into fecha from dual dbms output put line to char fecha day dd de month de yyyy a las hh24 mi ss END Subprogramas tienen nombre Editar Se pueden almacenar en la base de datos Existen dos tipos de subprogramas Procedimientos PROCEDURE y Funciones FUNCTION Procedimientos Editar Los procedimientos tienen la utilidad de fomentar la reutilizacion de programas que se usan comunmente Una vez compilado queda almacenado en la base de datos por eso es tambien llamado Procedimiento almacenado y puede ser utilizado por multiples aplicaciones dd La sintaxis es la siguiente CREATE OR REPLACE PROCEDURE nombre procedimiento nombre parametro modo tipodatos parametro IS AS bloque de codigo Donde modo puede contener los valores IN OUT IN OUT Por defecto tiene el valor IN si no se pone nada IN indica que el parametro es de entrada y no se podra modificar OUT indica que el parametro es de salida con lo que el procedimiento devolvera un valor en el IN OUT indica que el parametro es de entrada salida Con lo que al llamar al procedimiento se le dara un valor que luego podra ser modificado por el procedimiento y devolver este nuevo valor dd dd tipodatos parametro indica el tipo de datos que tendra el parametro segun lo indicado en Tipos de datos Oracle PLSQL dd dd Para borrar un procedimiento almacenado de la base de datos DROP PROCEDURE nombre procedimiento Para utilizar un procedimiento almacenado de la base de datos Simplemente se lo llama desde un bloque anonimo desde la linea de comandos previamente habiendo inicializado el los parametro s en caso que existan DECLARE nombre parametro tipodatos parametro BEGIN nombre parametro tipodatos parametro valor de inicializacion nombre procedimiento nombre parametro gt nombre parametro END Funciones Editar Una funcion es un bloque de codigo PL SQL que tiene las mismas caracteristicas que un procedimiento almacenado La diferencia estriba que una funcion devuelve un valor al retornar Al devolver un valor puede ser llamada como parte de una expresion La sintaxis seria CREATE OR REPLACE FUNCTION nombre funcion nombre parametro modo tipodatos parametro RETURN tipodatos retorno IS AS bloque de codigo Donde modo puede contener los valores IN OUT IN OUT Por defecto tiene el valor IN si no se pone nada IN indica que el parametro es de entrada y no se podra modificar OUT indica que el parametro es de salida con lo que la funcion devolvera un valor en el IN OUT indica que el parametro es de entrada salida Con lo que al llamar a la funcion se le dara un valor que luego podra ser modificado por la misma y devolver este nuevo valor Sin embargo en este caso solo tendria sentido por el concepto de funcion en si mismo declarar parametros del tipo IN y devolver el valor como retorno de la funcion dd dd tipodatos parametro y tipodatos retorno indican el tipo de datos que tendra el parametro y el valor de retorno de la funcion respectivamente segun lo indicado en Tipos de datos Oracle PLSQL dd dd Para borrar una funcion de la base de datos DROP FUNCTION nombre funcion Los procedimientos y funciones se pueden agrupar en unas estructuras llamadas Paquetes Paquetes Editar Se usan para agrupar procedimientos y funciones Facilitan la descomposicion modular y el mantenimiento Constan de dos partes la especificacion o prototipo y el cuerpo Especificacion Editar Se declaran los elementos publicos que componen el paquete es decir variables funciones y procedimientos que seran accesibles desde fuera del paquete De las funciones y procedimientos solo indicamos la cabecera no el cuerpo dd CREATE OR REPLACE PACKAGE nombrePaquete IS AS variables constantes cursores etc publicos cabecera de procedimientos y funciones END nombrePaquete TRIGGER Editar Un trigger o disparador se ejecuta ante un determinado evento de manera automatica Generalmente se utilizan para garantizar que una determinada accion siempre se realiza despues de realizar una tarea determinada Se debe tener cuidado con este tipo de estructuras puesto que un uso excesivo puede dar lugar a dependencias dificiles de mantener Ademas se deben tener muy claros las restricciones de integridad para evitar problemas La sintaxis seriaA nivel de sentencia CREATE OR REPLACE TRIGGER nombre trigger momento ejecucion evento evento ON nombre tabla bloque PLSQL A nivel de registro CREATE OR REPLACE TRIGGER nombre trigger momento ejecucion evento evento ON nombre tabla REFERENCING OLD AS old NEW AS new FOR EACH ROW WHEN condicion bloque PLSQL Donde momento ejecucion indica cuando se ejecuta el trigger automaticamente Puede contener los valores BEFORE o AFTER evento indica la operacion que provoca la ejecucion de este bloque Puede contener los valores INSERT UPDATE o DELETE old indica el nombre que se le da al registro con los valores antiguos que se tenian antes de la ejecucion de la operacion que activo el trigger Mientras que new indica el valor que tiene actualmente despues de dicha operacion Con la clausula WHEN se puede indicar una restriccion que haga que el trigger se ejecute o no Por ejemplo se puede indicar que el trigger se ejecute solo si el campo campo1 de la tabla tiene un valor mayor que 50 La clausula FOR EACH ROW indica que el trigger es a nivel de registro Para eliminar un trigger DROP TRIGGER nombre triggerReferencias Editar What Is PL SQL Introduction amp Architecture en ingles Consultado el 2 de enero de 2020 Datos Q41574 Libros y manuales Oracle PL SQL Obtenido de https es wikipedia org w index php title PL SQL amp oldid 131325152, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos