Sie sind auf Seite 1von 4

Introduction to Oracle: SQL and PL/SQL, Instructor Guide, Volumen 1

Práctica 16: Declarando Variables


--------------------------------------------------------------------

Ejercicio 1:
Evalue cada una de las declaraciones siguientes. Determine cuáles no son l
egales y explique porqué.
a) DECLARE
v_id NUMBER(4);
b) DECLARE
v_x, v_y, v_z VARCHAR2(10);
c) DECLARE
v_birthdate DATE NOT NULL;
d) DECLARE
v_in_stock BOOLEAN := 1;
Respuestas:
-----------
1.a) Legal.
1.b) Ilegal, porque solo se permite un nombre de identificado
r para definir una sola variable, en una declaración.
1.c) Ilegal, porque al utilizar la Restricción "NOT NULL" se le
debe asignar un valor a la variable que se declara, y esto es lo que falta en l
a declaración.
1.d) Ilegal, porque a una variable de tipo BOOLEAN se le pued
e asignar uno de los tres valores siguientes: TRUE, FALSE, ó NULL.
Ejercicio 2: En cada una de las asignaciones siguientes determine el tipo de
dato de la expresión resultante.
a) v_days_to_go := v_due_date - SYSDATE;
b) v_sender := USER || ': ' || TO_CHAR(v_dept_n
o);
c) v_sum := $100,000 + $250,000;
d) v_flag := TRUE;
e) v_n1 := v_n2 > (2 * v_n3);
f) v_value := NULL;
Respuestas:
-----------
2.a) Escalar -> Número Entero
2.b) Escalar -> Cadena de Caracteres
2.c) Ilegal. No puede convertir símbolos monetarios desde el ti
po de datos (de columnas) VARCHAR2 a NUMBER.
2.d) Escalar -> Booleano
2.e) Escalar -> Booleano
2.f) Escalar -> Cualquier subtipo: Numérico ó Caracteres ó Fecha ó Bo
oleano.
Ejercicio 3: Cree un bloque anónimo para mostrar en pantalla la frase "Mi Bloqu
e PL/SQL Funciona".
Respuesta:
----------
1°) Declaración de una variable de ambiente del sistema:
--------------------------------------------------------
SQL> VARIABLE G_MESSAGE VARCHAR2(25);

Definición del Bloque PL/SQL Anónimo:


-------------------------------------
SQL>
BEGIN
:G_MESSAGE := 'Mi Bloque PL/SQL Funciona';
END;
/
SQL> save p16q3.sql
SQL> PRINT G_MESSAGE;
Respuesta del Apéndice A-54:
----------------------------
SQL> edit p16q3_v2.sql
Contenido del archivo de comandos: p16q3_v2.sql
-----------------------------------------------
"
VARIABLE G_MESSAGE VARCHAR2(25);
BEGIN
:G_MESSAGE := 'Mi Bloque PL/SQL Funciona';
END;
/
PRINT G_MESSAGE;
"
SQL> start p16q3_v2.sql
Si tienes tiempo, completa los ejercicios siguientes.
Ejercicio 4: Cree un Bloque que declara dos variables. Asigne los valores de
esas variables PL/SQL para las variables de ambiente del sistema
e imprima los resultados de las variables PL/SQL en pantalla. Ej
ecute el Bloque PL/SQL. Guarde el Bloque PL/SQL a un archivo nombrándolo
p16q4.sql.
Variables a declarar en el Bloque PL/SQL Anónimo:
-------------------------------------------------
V_CHAR Escalar Caracter (tamaño de la variable).
V_NUM Escalar Numérico.
Asigne los valores a esas variables como se muestra a continuación
:
----------------------------------------------------------------
---
V_CHAR La cadena de caracteres '42 es la respuesta'
V_NUM Los primeros dos caracteres de V_CHAR
Respuesta:
----------
1° Declaración de las variables de ambiente del sistema:
--------------------------------------------------------
SQL> VARIABLE G_CHAR VARCHAR2(20);
SQL> VARIABLE G_NUM NUMBER;
2° Definición del Bloque PL/SQL Anónimo:
----------------------------------------
SQL> BEGIN
:G_CHAR := '42 es la respuesta';
:G_NUM := TO_NUMBER( SUBSTR(:G_CHAR, 1, 2) );
END;
/
SQL> save p16q4.sql
3° Muestra en pantalla las variables de ambiente del sistema:
-------------------------------------------------------------
SQL> PRINT G_CHAR;
SQL> PRINT G_NUM;
Respuesta del Apéndice A-55:
----------------------------
SQL> edit p16q4_v2.sql
Contenido del archivo de comandos p16q4_v2.sql
----------------------------------------------
"
VARIABLE G_CHAR VARCHAR2(20);
VARIABLE G_NUM NUMBER;
BEGIN
:G_CHAR := '42 es la respuesta';
:G_NUM := TO_NUMBER( SUBSTR(:G_CHAR, 1, 2) );
END;
/
PRINT G_CHAR;
PRINT G_NUM;
"
SQL> start p16q4_v2.sql

Das könnte Ihnen auch gefallen