En este tutorial, aprenderemos cómo 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.
En este tutorial, aprenderá:
- Inserción de datos
- Actualización de datos
- Eliminación de datos
- Selección de datos
Transacciones DML en PL / SQL
DML significa lenguaje de manipulación de datos . Estas declaraciones se utilizan principalmente para realizar la actividad de manipulación. Se ocupa de las siguientes operaciones.
- Inserción de datos
- Actualización de datos
- Eliminación de datos
- Selección de datos
En PL / SQL, podemos hacer la manipulación de datos solo usando 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:
BEGININSERT INTO( , ,… )VALUES( ,… : );END;
- La sintaxis anterior muestra el comando INSERT INTO. 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 'VALORES' es obligatoria si los valores se dan por separado como se muestra arriba.
Sintaxis:
BEGININSERT INTO( , ,… , )SELECT , ,… FROM ;END;
- La sintaxis anterior muestra el comando INSERT INTO que toma los valores directamente de
usando el comando SELECT. - La palabra clave 'VALORES' no debería estar presente en este caso ya que los valores no se dan 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 instrucció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 UPDATESET = , = , = WHERE ;END;
- La sintaxis anterior muestra la ACTUALIZACIÓN. La palabra clave 'SET' indica a ese motor PL / SQL que actualice el valor de la columna con el valor dado.
- La cláusula 'WHERE' es opcional. Si no se da 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:
BEGINDELETEFROMWHERE ;END;
- La sintaxis anterior muestra el comando DELETE. 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 'WHERE' es opcional. Si no se proporciona esta cláusula, se eliminará toda la tabla.
Selección de datos
Proyección / recuperación de datos significa recuperar los datos requeridos de la tabla de la base de datos. Esto se puede lograr usando el comando 'SELECT' con la cláusula 'INTO'. El comando 'SELECT' obtendrá los valores de la base de datos, y la cláusula 'INTO' asignará estos valores a la variable local del bloque PL / SQL.
A continuación se muestran los puntos que deben tenerse en cuenta en la declaración 'SELECT'.
- La instrucció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 instrucción 'SELECT' devuelve más de un valor, se generará la excepción 'TOO_MANY_ROWS'.
- La instrucció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 se completan en el mismo orden que se menciona en la declaración.
- La cláusula 'WHERE' es opcional y permite tener más restricciones sobre los registros que se van a buscar.
- La instrucción 'SELECT' se puede usar en la condición 'WHERE' de otras instrucciones DML para definir los valores de las condiciones.
- La instrucción 'SELECT' cuando se usan las declaraciones 'INSERT', 'UPDATE', 'DELETE' no debe tener la cláusula 'INTO' ya que no completará ninguna variable en estos casos.
Sintaxis:
BEGINSELECT,… INTO ,… FROM WHERE ;END;
- La sintaxis anterior muestra el comando SELECT-INTO. La palabra clave 'FROM' es obligatoria e identifica el nombre de la tabla desde la que se deben obtener los datos.
- La cláusula 'WHERE' es opcional. Si no se proporciona esta cláusula, se recuperarán los datos de toda la tabla.
Ejemplo 1 : En este ejemplo, veremos cómo realizar operaciones DML en PL / SQL. Vamos a insertar los cuatro registros siguientes en la tabla emp.
EMP_NAME | EMP_NO | SALARIO | GERENTE |
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 de empleado 'ZZZ'. Finalmente, vamos a proyectar los detalles del empleado 'XXX'.
DECLAREl_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,managedVALUES(‘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 EMPSET salary=15000WHERE 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;/
Producción:
Values InsertedValues UpdatedValues DeletedEmployee DetailEmployee Name:XXXEmployee Number:1001Employee Salary:15000Employee Manager Name:BBB
Explicación del código:
- Línea de código 2-5 : Declaración de la variable.
- Línea de código 7-14 : Insertar los registros en la tabla emp.
- Línea de código 15 : Confirmación de 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 : Confirmación de la transacción de actualización.
- Línea de código 22 : Eliminación del registro de 'ZZZ'
- Línea de código 23 : Confirmación de 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 : Visualización del valor de los registros obtenidos.