En un bloque PL/SQL, se utilizan sentencias SQL para recuperar y modificar los datos de tablas de una BD.
Hasta ahora hemos trabajado con SQL de forma interactiva, escribíamos la sentencia y obteníamos los resultados en pantalla. Para trabajar con SQL dentro de un programa trabajaremos con SQL embebido o incrustado. Los datos devueltos de la consulta los guardaremos en variables y estructuras definidas en el lenguaje anfitrión, en nuestro caso PLSQL, para utilizarlas como convenga. Para ello añadiremos alguna cláusula a la sentencia SELECT
.
PL/SQL soporta el Lenguaje de Manipulación de Datos (DML) y los comandos de control de transacciones. Se pueden utilizar los comandos DML para modificar los datos de una tabla de Base de Datos.
PL/SQL no soporta directamente el Lenguaje de Definición de Datos (DDL) como CREATE TABLE, ALTER TABLE, DROP TABLE
, etc... Lo cual no puede suceder si las aplicaciones tienen que crear objetos de Base de Datos en tiempo de ejecución mediante el paso de valores. Las sentencias DDL no pueden ser ejecutadas directamente. Estas instrucciones son sentencias dinámicas de SQL. Las sentencias dinámicas de SQLse construyen como cadenas de caracteres en tiempo de ejecución y pueden contener marcadores de posición para parámetros. Por lo tanto, puede utilizar SQL dinámico para ejecutar sus sentencias DDL en PL/SQL.
PL/SQL no soporta directamente las sentencias de Lenguaje de Control de Datos (DCL), tales como GRANT
o REVOKE
. Puede utilizar SQL dinámico para ejecutarlas.
Si queremos recuperar datos de la BD utilizaremos la instrucción SELECT
utilizaremos este formato.
Sintaxis:
SELECT lista_campos INTO {nombre_variable[, nombre_variable]...| nombre_registro}
FROM tabla
[WHERE condición];
donde
- la lista_campos, contendrá al menos una columna y puede incluir expresiones SQL, funciones de fila, o funciones de grupo.
- la cláusula INTO
es obligatoria y se especifica entre SELECT
y cláusula FROM
.
- nombre_variable, variable donde se guardará el valor recuperado. Deben especificarse tantas variables como campos se indiquen en la lista de campos, debe haber correspondencia en posición y en tipo de datos.
- nombre_registro, un dato compuesto de PL/SQL donde se guardarán los valores recuperados
Las instrucciones SELECT
dentro de un programa PLSQL deben devolver una sola fila. Una consulta que devuelve más de una fila o ninguna fila genera un error de tipo, respectivamente TOO_MANY_ROWS o NO_DATA_FOUND.
Si queremos recuperar más de una fila necesitaremos una estructura de datos llamada cursor que se verá más adelante.
Las instrucciones DML, INSERT, UPDATE
y DELETE
, se ejecutan utilizando la misma sintaxis que en SQL.