Super User

Super User

Comprensión de las características principales de PL / SQL
PL / SQL combina el poder de manipulación de datos de SQL con el poder de procesamiento de lenguajes procedimentales. Puede controlar el flujo del programa con declaraciones como IF y LAZO. Al igual que con otros lenguajes de programación procedimental, puede declarar variables, definir procedimientos y funciones, y capturar errores en tiempo de ejecución.


PL / SQL le permite dividir problemas complejos en fácilmente comprensibles código de procedimiento y reutilizar este código en múltiples aplicaciones.

Cuando un problema puede resolverse a través de SQL simple, puede emitir comandos SQL directamente dentro de su Programas PL / SQL, sin necesidad de aprender nuevas API. Los tipos de datos de PL / SQL se corresponden con Tipos de columna de SQL, lo que facilita el intercambio de variables PL / SQL con datos dentro una mesa.


Comprensión de la estructura de bloques PL / SQL
Las unidades básicas (procedimientos, funciones y bloques anónimos) que componen un Los programas PL / SQL son bloques lógicos, que se pueden anidar unos dentro de otros. Un bloque grupos de declaraciones y declaraciones relacionadas. Puede colocar declaraciones cerca de donde
se utilizan, por ejemplo, dentro de un gran subprograma. Las declaraciones son locales para el bloquear y dejar de existir cuando el bloque se completa, lo que ayuda a evitar el desorden espacios de nombres para variables y procedimientos. Para una descripción de la sintaxis del bloque
estructura, consulte "Declaración de bloque" en la página 13-8.

Como muestra la Figura 1-2, un bloque PL / SQL tiene tres partes básicas: una parte declarativa (DECLARE), una parte ejecutable (BEGIN .. END) y un manejo de excepciones (EXCEPCIÓN) parte que maneja condiciones de error. Solo se requiere la parte ejecutable.

La parte declarativa opcional se escribe primero, donde se definen tipos, variables y Artículos similares. Estos elementos se manipulan en la parte ejecutable. Excepciones planteadas durante la ejecución se puede tratar en la parte de manejo de excepciones. Para un ejemplo de
Estructura de bloque PL / SQL, consulte el Ejemplo 1–3 en la página 1-6.

Puede anidar bloques en las partes ejecutables y de manejo de excepciones de un bloque PL / SQL o subprograma pero no en la parte declarativa. Puede definir subprogramas locales en el parte declarativa de cualquier bloque. Puede llamar a subprogramas locales solo desde el bloque en
que están definidos.

images 1
Comprensión de las variables y constantes de PL / SQL
PL / SQL le permite declarar variables y constantes, luego usarlas en SQL y declaraciones de procedimiento en cualquier lugar donde se pueda usar una expresión. Debes declarar un constante o variable antes de hacer referencia a ella en cualquier otra declaración. Para adicional  información, consulte "Declaraciones" en la página 2-8.


Declaración de variables
Las variables pueden tener cualquier tipo de datos SQL, como CHAR, DATE o NUMBER, o un
Tipo de datos solo PL / SQL, como BOOLEAN o PLS_INTEGER.

Por ejemplo, suponga que desea declarar variables para datos de piezas, como part_no para contener números de 6 dígitos
e in_stock para mantener el valor booleano VERDADERO o FALSO.

Declaras estos y variables de piezas relacionadas como se muestra en el Ejemplo 1–1. Tenga en cuenta que hay un punto y coma (;) en
al final de cada línea en la sección de declaración.


Ejemplo 1–1

Declaración de variables en PL / SQL
DECLARE

part_no NUMBER(6);

part_name VARCHAR2(20);

in_stock BOOLEAN;

part_price NUMBER(6,2);

part_desc VARCHAR2(50);

 

Asignar valores a una variable
Puede asignar valores a una variable de tres formas. La primera forma usa la asignación operador (: =), dos puntos seguidos de un signo igual, como se muestra en el Ejemplo 1–2. Tu colocas la variable a la izquierda del operador y una expresión, incluidas las llamadas a funciones, para
la derecha. Tenga en cuenta que puede asignar un valor a una variable cuando se declara.


Ejemplo 1–2

Asignación de valores a variables con el operador de asignación

DECLARE

wages NUMBER;
hours_worked NUMBER := 40;
hourly_salary NUMBER := 22.50;
bonus NUMBER := 150;
country VARCHAR2(128);
counter NUMBER := 0;
done BOOLEAN;
valid_id BOOLEAN;
emp_rec1 employees%ROWTYPE;
emp_rec2 employees%ROWTYPE;
TYPE commissions IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
comm_tab commissions;

BEGIN

wages := (hours_worked * hourly_salary) + bonus;
country := 'France';
country := UPPER('Canada');
done := (counter > 100);
valid_id := TRUE;
emp_rec1.first_name := 'Antonio';
emp_rec1.last_name := 'Ortiz';
emp_rec1 := emp_rec2;
comm_tab(5) := 20000 * 0.15;

END;

 

La segunda forma de asignar valores a una variable es seleccionando (o recuperando) la base de datos valores en él. En el Ejemplo 1-3, el 10% del salario de un empleado se selecciona en la bonificación.

Ahora puede usar la variable de bonificación en otro cálculo o insertar su valor en una tabla de base de datos.

 

Ejemplo 1–3

Asignación de valores a variables seleccionando INTO

DECLARE
   bonus NUMBER(8,2);
   emp_id NUMBER(6) := 100;
BEGIN
  SELECT salary * 0.10 INTO bonus FROM employees
  WHERE employee_id = emp_id;
END;

 

La tercera forma de asignar un valor a una variable es pasándola como OUT o IN OUT parámetro a un subprograma, y luego asignar el valor dentro del subprograma.
El ejemplo 1-4 pasa la variable sal a un subprograma y el subprograma se actualiza La variable.
En el ejemplo, DBMS_OUTPUT.PUT_LINE se usa para mostrar la salida de PL / SQL programa

 

Ejemplo 1–4

Asignación de valores a variables como parámetros de un subprograma

REM SERVEROUTPUT must be set to ON to display output with DBMS_OUTPUT
SET SERVEROUTPUT ON FORMAT WRAPPED
DECLARE
   new_sal NUMBER(8,2);
   emp_id NUMBER(6) := 126;
PROCEDURE adjust_salary(emp_id NUMBER, sal IN OUT NUMBER) IS
   emp_job VARCHAR2(10);
   avg_sal NUMBER(8,2);
BEGIN
SELECT job_id INTO emp_job FROM employees WHERE employee_id = emp_id;
SELECT AVG(salary) INTO avg_sal FROM employees WHERE job_id = emp_job;
DBMS_OUTPUT.PUT_LINE ('The average salary for ' || emp_job || ' employees: ' || TO_CHAR(avg_sal));
sal := (sal + avg_sal)/2; -- adjust sal value which is returned
END;
BEGIN
SELECT AVG(salary) INTO new_sal FROM employees;
DBMS_OUTPUT.PUT_LINE ('The average salary for all employees: '
|| TO_CHAR(new_sal));
adjust_salary(emp_id, new_sal); -- assigns a new value to new_sal
DBMS_OUTPUT.PUT_LINE ('The adjusted salary for employee ' || TO_CHAR(emp_id)
|| ' is ' || TO_CHAR(new_sal)); -- sal has new value
END;
/

 

Vincular variables
Cuando inserta una instrucción INSERT, UPDATE, DELETE o SELECT SQL directamente en su código PL / SQL, PL / SQL convierte las variables en las cláusulas WHERE y VALUES en enlazar variables automáticamente. Oracle puede reutilizar estas declaraciones SQL cada vez que el mismo
se ejecuta el código. Para ejecutar declaraciones similares con diferentes valores de variable, puede guardar analizar la sobrecarga llamando a un procedimiento almacenado que acepta parámetros, luego emite las declaraciones con los parámetros sustituidos en los lugares apropiados.

Necesita especificar variables de enlace con SQL dinámico, en cláusulas como WHERE y VALORES donde normalmente usa variables. En lugar de concatenar literales y valores de variable en una sola cadena, reemplace las variables con los nombres de bind variables (prefijadas por dos puntos) y especifique las variables PL / SQL correspondientes con la cláusula USING. Usando la cláusula USING, en lugar de concatenar las variables en
la cadena, reduce la sobrecarga de análisis y permite que Oracle reutilice las declaraciones SQL. Xa
ejemplo:
'DELETE FROM employees WHERE employee_id = :id' USING emp_id;

 

Declaración de constantes
Declarar una constante es como declarar una variable, excepto que debe agregar la palabra clave CONSTANTE y asigne inmediatamente un valor a la constante. No hay más asignaciones a las constantes están permitidas. El siguiente ejemplo declara una constante:

credit_limit CONSTANT NUMBER := 5000.00;

Procesamiento de consultas con PL / SQL
Procesar una consulta SQL con PL / SQL es como procesar archivos con otros lenguajes. 
Por ejemplo, un programa Perl abre un archivo, lee el contenido del archivo, procesa cada línea y luego cierra el archivo. Del mismo modo, un programa PL / SQL emite una consulta y procesa la filas del conjunto de resultados como se muestra en el Ejemplo 1-5.


Ejemplo 1–5

Procesamiento de resultados de consultas en un LOOP

BEGIN
   FOR someone IN (SELECT * FROM employees WHERE employee_id < 120 )
   LOOP
       DBMS_OUTPUT.PUT_LINE('First name = ' || someone.first_name || ', Last name = ' || someone.last_name);
   END LOOP;
END;
/

 

Declaración de subprogramas PL / SQL
Los subprogramas se denominan bloques PL / SQL que se pueden llamar con un conjunto de parámetros.
PL / SQL tiene dos tipos de subprogramas: procedimientos y funciones. La siguiente es una ejemplo de declaración de un procedimiento PL / SQL:

DECLARE
   in_string VARCHAR2(100) := 'This is my test string.';
   out_string VARCHAR2(200);
PROCEDURE double ( original IN VARCHAR2, new_string OUT VARCHAR2 ) AS
BEGIN
       new_string := original || original;
END;

Página 1 de 10

Magic PL/SQL

Blog orientado al desarrollo de PL / SQL en el "Maravilloso Mundo ORACLE". Cursos Online y Tutoriales Gratis de Manejo de Base de Datos. Aprende a programar, a crear aplicaciones para empresas y negocios y gana dinero. Hosting y Tecnología.