Oracle Insertar, actualizar, eliminar y seleccionar PL/SQL en [Ejemplo]

En este tutorial, aprenderemos a usar SQL en PL/SQL. SQL es el componente real que se encarga de buscar y actualizar los datos en la base de datos, mientras que PL/SQL es el componente que procesa estos datos. Ademรกs, en este artรญculo, tambiรฉn discutiremos cรณmo combinar SQL dentro del bloque PL/SQL.

Transacciones DML en PL/SQL

DML significa Lenguaje de manipulaciรณn de datosEstas instrucciones se utilizan principalmente para realizar la actividad de manipulaciรณn. Se ocupan de las siguientes operaciones.

  • Inserciรณn de datos
  • Actualizaciรณn de datos
  • Eliminaciรณn de datos
  • Selecciรณn de datos

En PL/SQL, podemos realizar la manipulaciรณn de datos sรณlo utilizando los comandos SQL.

Inserciรณn de datos

En PL/SQL, podemos insertar los datos en cualquier tabla usando el comando SQL INSERT INTO. Este comando tomarรก el nombre de la tabla, la columna de la tabla y los valores de la columna como entrada e insertarรก el valor en la tabla base.

El comando INSERT tambiรฉn puede tomar los valores directamente de otra tabla usando la instrucciรณn 'SELECT' en lugar de dar los valores para cada columna. A travรฉs de la declaraciรณn 'SELECT', podemos insertar tantas filas como contenga la tabla base.

Sintaxis:

BEGIN
  INSERT INTO <table_name>(<column1 >,<column2>,...<column_n>)
     VALUES(<valuel><value2>,...:<value_n>);
END;
  • La sintaxis anterior muestra el comando INSERTAR EN. El nombre y los valores de la tabla son campos obligatorios, mientras que los nombres de las columnas no son obligatorios si las declaraciones de inserciรณn tienen valores para todas las columnas de la tabla.
  • La palabra clave "VALUES" es obligatoria si los valores se proporcionan por separado como se muestra arriba.

Sintaxis:

BEGIN
  INSERT INTO <table_name>(<columnl>,<column2>,...,<column_n>)
     SELECT <columnl>,<column2>,.. <column_n> FROM <table_name2>;
END;
  • La sintaxis anterior muestra el comando INSERT INTO que toma los valores directamente de usando el comando SELECT.
  • La palabra clave "VALUES" no deberรญa estar presente en este caso ya que los valores no se proporcionan por separado.

Actualizaciรณn de datos

La actualizaciรณn de datos simplemente significa una actualizaciรณn del valor de cualquier columna de la tabla. Esto se puede hacer usando la declaraciรณn 'ACTUALIZAR'. Esta declaraciรณn toma el nombre de la tabla, el nombre de la columna y el valor como entrada y actualiza los datos.

Sintaxis:

BEGIN	
  UPDATE <table_name>
  SET <columnl>=<VALUE1>,<column2>=<value2>,<column_n>=<value_n> 
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • La sintaxis anterior muestra la ACTUALIZACIร“N. La palabra clave 'SET' indica al motor PL/SQL que actualice el valor de la columna con el valor proporcionado.
  • La clรกusula "Dร“NDE" es opcional. Si no se proporciona esta clรกusula, se actualizarรก el valor de la columna mencionada en toda la tabla.

Eliminaciรณn de datos

La eliminaciรณn de datos significa eliminar un registro completo de la tabla de la base de datos. El comando 'BORRAR' se utiliza para este propรณsito.

Sintaxis:

BEGIN
  DELETE
  FROM
  <table_name>
  WHERE <condition that uniquely identifies the record that needs to be update>; 
END;
  • La sintaxis anterior muestra el comando ELIMINAR. La palabra clave 'FROM' es opcional y con o sin la clรกusula 'FROM' el comando se comporta de la misma manera.
  • La clรกusula "Dร“NDE" es opcional. Si no se proporciona esta clรกusula, se eliminarรก toda la tabla.

Selecciรณn de datos

Proyecciรณn/obtenciรณn de datos significa recuperar los datos requeridos de la tabla de la base de datos. Esto se puede lograr utilizando el comando 'SELECT' con la clรกusula 'INTO'. El comando 'SELECT' buscarรก los valores de la base de datos, y la clรกusula 'INTO' asignarรก estos valores a la variable local de la Bloque PL / SQL.

A continuaciรณn se detallan los puntos que deben considerarse en la declaraciรณn 'SELECCIONAR'.

  • La declaraciรณn 'SELECT' debe devolver solo un registro mientras se usa la clรกusula 'INTO' ya que una variable puede contener solo un valor. Si la declaraciรณn 'SELECT' devuelve mรกs de un valor, se generarรก la excepciรณn 'TOO_MANY_ROWS'.
  • La declaraciรณn 'SELECT' asignarรก el valor a la variable en la clรกusula 'INTO', por lo que necesita obtener al menos un registro de la tabla para completar el valor. Si no obtuvo ningรบn registro, se genera la excepciรณn "NO_DATA_FOUND".
  • El nรบmero de columnas y su tipo de datos en la clรกusula "SELECT" debe coincidir con el nรบmero de variables y sus tipos de datos en la clรกusula "INTO".
  • Los valores se obtienen y completan en el mismo orden que se menciona en la declaraciรณn.
  • La clรกusula 'WHERE' es opcional y permite tener mรกs restricciones en los registros que se van a recuperar.
  • La declaraciรณn 'SELECT' se puede utilizar en la condiciรณn 'WHERE' de otras declaraciones DML para definir los valores de las condiciones.
  • La declaraciรณn 'SELECT' cuando se utilizan declaraciones 'INSERT', 'UPDATE', 'DELETE' no debe tener la clรกusula 'INTO' ya que no completarรก ninguna variable en estos casos.

Sintaxis:

BEGIN
  SELECT <columnl>,..<column_n> INTO <vanable 1 >,. .<variable_n> 
   FROM <table_name>
   WHERE <condition to fetch the required records>;
END;
  • La sintaxis anterior muestra el comando SELECT-INTO. La palabra clave "DESDE" es obligatoria y identifica el nombre de la tabla de la que se deben obtener los datos.
  • La clรกusula "Dร“NDE" es opcional. Si no se proporciona esta clรกusula, se recuperarรกn los datos de toda la tabla.

Ejemplo :En este ejemplo, veremos cรณmo realizar operaciones DML en PL / SQL. Vamos a insertar los siguientes cuatro registros en la tabla emp.

EMP_NOMBRE EMP_NO SALARIO GENERAL
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
ZZZ 1003 7500 BBB

Luego actualizaremos el salario de 'XXX' a 15000 y eliminaremos el registro del empleado 'ZZZ'. Finalmente, proyectaremos los datos del empleado 'XXX'.

Selecciรณn de datos en PL/SQL

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER; 
l_manager VARCHAR2(250);
BEGIN	
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(โ€˜BBBโ€™,1000,25000,โ€™AAAโ€™);
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,โ€™BBB);
INSERT INTO emp(emp_name,emp_no,salary,managed 
VALUES(โ€˜YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager) 
VALUES(โ€˜ZZZ',1003,7500,'BBB'):โ€ญ
COMMIT;
Dbms_output.put_line(โ€˜Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line(โ€˜Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT:
Dbms_output.put_line('Values Deleted );
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';

Dbms output.put line(โ€˜Employee Detailโ€™);
Dbms_output.put_line(โ€˜Employee Name:โ€˜||l_emp_name);
Dbms_output.put_line(โ€˜Employee Number:โ€˜||l_emp_no);
Dbms_output.put_line(โ€˜Employee Salary:โ€˜||l_salary);
Dbms output.put line(โ€˜Emplovee Manager Name:โ€˜||l_manager):
END;
/

Salida:

Values Inserted
Values Updated
Values Deleted
Employee Detail 
Employee Name:XXX 
Employee Number:1001 
Employee Salary:15000 
Employee Manager Name:BBB

Explicaciรณn del cรณdigo:

  • Lรญnea de cรณdigo 2-5: Declarando la variable.
  • Lรญnea de cรณdigo 7-14: Insertar los registros en la tabla emp.
  • Lรญnea de cรณdigo 15: Confirmar las transacciones de inserciรณn.
  • Lรญnea de cรณdigo 17-19: Actualizaciรณn del salario del empleado 'XXX' a 15000
  • Lรญnea de cรณdigo 20: Confirmando la transacciรณn de actualizaciรณn.
  • Lรญnea de cรณdigo 22: Eliminando el registro de 'ZZZ'
  • Lรญnea de cรณdigo 23: Confirmando la transacciรณn de eliminaciรณn.
  • Lรญnea de cรณdigo 25-27: Seleccionar el registro de 'XXX' y completar la variable l_emp_name, l_emp_no, l_salary, l_manager.
  • Lรญnea de cรณdigo 28-32: muestra el valor de los registros recuperados.

Resumir este post con: