Inicio > Oracle > Ejecutando SQL dentro de bloques PL/SQL

Ejecutando SQL dentro de bloques PL/SQL


PL/SQL es un lenguaje de programación de base de datos. Casi todos los programas que escribiremos en PL/SQL leerán desde, o escribirán en, una base de datos Oracle utilizando SQL. Aunque estas series asumen que se conoce SQL, debemos estar conscientes de la forma en que llamamos a las sentencias desde un bloque PL/SQL.

Oracle hace que sea muy fácil escribir y ejecutar sentencias SQL en PL/SQL. La mayor parte de las veces, simplemente escribiremos las sentencias SQL directamente en nuestro bloque PL/SQL y después agregaremos el código necesario para la interfaz entre las sentencias SQL y el código PL/SQL.

Supongamos, por ejemplo, que tenemos una tabla llamada ESTUDIANTES, con una columna clave primaria id, y una columna apellido. Podemos ver el apellido del empleado con ID 2, como sigue:

Ejecutando 001

DROP TABLE Estudiantes CASCADE CONSTRAINTS;
CREATE TABLE Estudiantes (
id                      NUMBER(5) PRIMARY KEY,
nombre           VARCHAR2(20),
apellido          VARCHAR2(20),
pension          FLOAT,
creditos         NUMBER(3)
);

DROP SEQUENCE Estudiantes_Secuencia;
CREATE SEQUENCE Estudiantes_Secuencia
  START WITH 10000
  INCREMENT BY 1;

INSERT INTO Estudiantes (id, nombre, apellido, pension, creditos)
VALUES (Estudiantes_Secuencia.NEXTVAL, ‘Ricardo’, ‘Huaman’, 100, 11);

INSERT INTO Estudiantes (id, nombre, apellido, pension, creditos)
VALUES (Estudiantes_Secuencia.NEXTVAL, ‘Juan’, ‘Victorio’,120, 11);

SELECT * FROM Estudiantes;

Ahora vamos a ejecutar esta una consulta dentro de nuestro bloque PL/SQL y desplegar el nombre. Para hacer esto, necesitaremos “copiar” el apellido desde la tabla a una variable local, lo cual podemos hacer con la cláusula INTO:

DECLARE
lcApellido Estudiantes.apellido%TYPE;
BEGIN

SELECT apellido
INTO lcApellido
FROM Estudiantes
WHERE id = 10000;

DBMS_OUTPUT.put_line(lcApellido);

END;

Ejecutando 002

Primero declaramos una variable local, y haciendo esto introducimos otra característica de PL/SQL: la capacidad de fijar el tipo de datos de nuestra variable en función del tipo de datos de una columna en una tabla

Después ejecutamos una consulta contra la base, obteniendo el apellido del estudiante y asignándolo directamente en la variable lcApellido.

Otro ejemplo ahora ejecutamos la sentencias SELECT en PL/SQL, también querremos insertar, modificar y eliminar datos desde PL/SQL. Aquí hay ejemplos de cada uno de esos tipos de sentencias DML:

• Eliminamos todos los estudiantes cuya pension es igual a 100 y mostramos cuántas tuplas fueron eliminadas:

Ejecutando 003

DECLARE
lnpension Estudiantes.pension%TYPE := 100;
BEGIN
  DELETE FROM Estudiantes
WHERE Pension = lnpension;

DBMS_OUTPUT.put_line(SQL%ROWCOUNT);
END;

SELECT * FROM Estudiantes;

logo shipment4you 342 68 PNG ESP WEB

 

Categorías:Oracle
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: