Bloque PL/SQL Simple

Voy a usar el blog con mi estudiantes de Oracle para hacer pruebas, errores y aprendizajes en lugar de usar un campus virtual basado en Moodle.

A continuación un ejemplo simple de bloque anónimo escrito en PL/SQL que obtiene el 10% del sueldo de un empleado usando el esquema HR.

DECLARE
v_bonus NUMBER (8,2);
BEGIN

SELECT salary * 0.10
INTO v_bonus
FROM employees
WHERE employee_id = 176;
END;
¿Qué variantes puedo hacer al bloque?

8 comentarios to “Bloque PL/SQL Simple”

  1. Luis Castillo Says:

    si se elimina el WHRE se produce el siguiente error
    ORA-01422: exact fetch returns more than requested number of rows
    Esto por que se retorna mas de un valor a v_bonus

  2. D. Armando Says:

    Se debe tener presente tambien la presición de la variable en que se va a cargar lo que se recupera.
    Yo declare lo siguiente:
    v_bonus NUMBER (2,2);
    me arrojo este error:
    ORA-06502: PL/SQL: numeric or value error: number precision too large

  3. alonso agila Says:

    ORA-01422: retorna mas numeros de filas, y no puede almacenar en una solo variable como v_bonues

  4. Diego Guamán Says:

    Nos damos cuenta que con la clapsula where restringe para que envie un solo valor.

    Tener cuidado con puntos y comas cuando escribimos y mirar la configuración regional

    Al quitar la clapsula where se envian más datos de los soportados por la variable number y nos produce el error ora ORA-01422: exact fetch returns more than requested number of rows

    Y tener cuidado recordar que despues de sentencias sql van con punto y coma al final sino nos produce otro error distinto al anterior ORA-06550: line 6, column 2:

  5. fojeda Says:

    No hay que olvidar colocar INTO v_bonus ya que esto nos permite almacenar el resultado de la consulta SQL en la variable declarada en DECLARE

  6. Juan Pablo Angamarca Says:

    Si se cambia el tipo de datos de la variable a varchar2, recordar que se hace una conversión automática y no hay error.
    De acuerdo a la configuración regional tener cuidado con los puntos o las comas, si se pone una coma interpreta como un campo más y se lanza ORA-00947: not enough values.
    Si se recupera los datos con una condición con la que no se recuperan datos, por ejemplo, WHERE employee_id = 3456789;, se lanza el error ORA-01403: no data found, debería capturarse.

  7. Maria Jose Lazo Says:

    Si no conocemos con exactitud que tipo de dato nos va a devolver la consulta SQL, debemos declarar la variable v_bonus como %TYPE

  8. joaquin Says:

    Una pregunta:
    En un mismo fichero sql, se pueden teenr varios bloques de la manera:

    DECLARE
    variable NUMBER(10);
    BEGIN
    SELECT … FROM …;
    INSERT INTO … VALUES (variable);
    INSERT INTO … VALUES (variable);
    END;

    DECLARE
    variable NUMBER(10);
    BEGIN
    SELECT … FROM …;
    INSERT INTO … VALUES (variable);
    INSERT INTO … VALUES (variable);
    END;

    DECLARE
    variable NUMBER(10);
    BEGIN
    SELECT … FROM …;
    INSERT INTO … VALUES (variable);
    INSERT INTO … VALUES (variable);
    END;

    Gracias


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: