4 Conceptos bßsicos de programaci¾n con PLSQL

download 4 Conceptos bßsicos de programaci¾n con PLSQL

of 21

description

4 Conceptos bßsicos de programaci¾n con PLSQL

Transcript of 4 Conceptos bßsicos de programaci¾n con PLSQL

  • Conceptos bsicos de programacin con PL/SQLBase de Datos IIMC

  • IntroduccinSQL es un lenguaje de consulta para los sistemas de bases de datos relacinalesMuy diferentes a un lenguaje de programacin.Se hace necesario utilizar alguna herramienta que soporte la capacidad de consulta del SQL y la versatilidad de los lenguajes de programacin tradicionales.

  • Qu es PL/SQLPL/SQL es el lenguaje de programacin que proporciona Oracle para extender el SQL estndar con otro tipo de instrucciones auque menos potentes que las aplicaciones.

  • Tipo de datosNUMBER[(precision, scale)] CHAR[(maximum_length)] VARCHAR2(maximum_length) (32767 bytes. )BOOLEAN(True,False)DATE ( January 1, 4712 BC to December 31, 4712 AD )

  • ComentariosEn PL/SQL los comentarios de una sola lnea comienzan con --, -- Inicio del bloque de ejecucinlos de varias lneas comienzan con /* y terminan con */. /* This is a simple example of an exeception handler to trap division by zero. */

  • Bloques PL/SQLLa seccin declarativa en donde se declaran todas las constantes y variables que se van a utilizar en la ejecucin del bloque.La seccin de ejecucin que incluye las instrucciones a ejecutar en el bloque PL/SQL.La seccin de excepciones en donde se definen los manejadores de errores que soportar el bloque PL/SQL.Cada una de las partes anteriores se delimita por una palabra reservada, de modo que un bloque PL/SQL se puede representar como sigue:

  • Estructura PL/SQLDECLARE/* Parte Declarativa */BEGIN/* Parte de Ejecucin */EXCEPTION/* Parte de Excepciones */END;

  • Seccin de Declaracin de VariablesEn esta parte se declaran todos los tipos de datos, las constantes y variables utilizadas en elbloque de ejecucin. Tambin se declaran cursores, de gran utilidad para la consulta de datos, y excepciones definidas por el usuario. Es conveniente que el nombre de una variable comience por la letra v, el de una constante por c y as sucesivamente.

  • CONSTANTES Y VARIABLESnombre_variable [CONSTANT] tipo [NOT NULL] [:= valor_inicial];Donde tipo es: tipo_escalar | identif%TYPE | identificador%ROWTYPEtipo_escalar: NUMBER | DATE | CHAR | VARCHAR | BOOLEAN

  • DeclaracionesLa clusula CONSTANT indica la definicin de una constante cuyo valor no puede ser modificado. Se debe incluir la inicializacin de la constante en su declaracin.La clusula NOT NULL impide que a una variable se le asigne el valor nulo, y por tanto debe inicializarse a un valor diferente de NULL.Las variables que no son inicializadas toman el valor inicial NULL.La inicializacin puede incluir cualquier expresin legal de PL/SQL, que lgicamente debe corresponder con el tipo del identificador definido.

  • Declaracionesbirthdate DATE;emp_count SMALLINT := 0;acct_id VARCHAR2 (5) NOT NULL:= 'AP001'; Constantescredit_limit CONSTANT REAL := 5000.00;

  • DeclaracionesDECLARE -- declare the variables in this section last_name VARCHAR2(30); first_name VARCHAR2(25); employee_id NUMBER(6); active_employee BOOLEAN; monthly_salary NUMBER(6);number_of_days_worked NUMBER(2);pay_per_day NUMBER(6,2); avg_days_worked_month CONSTANT NUMBER(2) := 21;-- a constant variable

  • tax_year SMALLINT DEFAULT 92; valid BOOLEAN DEFAULT FALSE; Sentencia Default

  • Visualizar valoresPara poder visualizar valores desde dentro de un bloque PL/SQL se debe ejecutar la instruccin:

    dbms_output.put_line(dato).

    En inferiores a Oracle 10: Previamente hay que habilitar la visualizacin en el entorno de SQL*Plus con la instruccin SET SERVEROUTPUT ON.

  • Lnea de Comandos-- enable SERVEROUTPUT in SQL Command Line (SQL*Plus) to display output with -- DBMS_OUTPUT.PUT_LINE, this enables SERVEROUTPUT for this SQL*Plus session only SET SERVEROUTPUT ON

  • BEGINDBMS_OUTPUT.DISABLE;DBMS_OUTPUT.ENABLE (1000000);DBMS_OUTPUT.PUT_LINE (texto);DBMS_OUTPUT.PUT (texto);DBMS_OUTPUT.NEW_LINE;END;

  • EjemploDECLARE answer VARCHAR2(20); -- declare a variable BEGIN -- assign a value to a variable answer := 'Maybe'; /* use PUT_LINE to display data from the PL/SQL block, puede concatenar los resultados */DBMS_OUTPUT.PUT_LINE( 'The answer is: ' || answer ); END; /

  • EjemploDECLAREnombre_variable VARCHAR2(25);BEGINSELECT last_nameINTO nombre_variableFROM employees where last_name like 'Urman';DBMS_OUTPUT.PUT_LINE( 'EL nombre es '|| nombre_variable );

    END;

  • DECLARE monthly_salary NUMBER(6);number_of_days_worked NUMBER(2); pay_per_day NUMBER(6,2); -- Parte executable from BEGIN to ENDBEGIN monthly_salary := 2290; number_of_days_worked := 21; pay_per_day := monthly_salary/number_of_days_worked; -- the following displays output from the PL/SQL blockDBMS_OUTPUT.PUT_LINE('The pay per day is ' || TO_CHAR(pay_per_day)); -- the following is an optional exception part that handles errorsEXCEPTION WHEN ZERO_DIVIDE THEN pay_per_day := 0; END; /

  • ejemploDECLARE -- declare and assign values bonus_rateCONSTANT NUMBER(2,3) := 0.05; bonus NUMBER(8,2); emp_id NUMBER(6) := 120; -- assign a test value for employee ID BEGIN /* retreive a salary from the employees table, then calculate the bonus and assign the value to the bonus variable */SELECT salary * bonus_rate INTO bonus FROM employees WHERE employee_id = emp_id; -- display the employee_id, bonus amount, and bonus rateDBMS_OUTPUT.PUT_LINE ( 'Employee: ' || TO_CHAR(emp_id) || 'Bonus: ' || TO_CHAR(bonus) || ' Bonus Rate: ' || TO_CHAR(bonus_rate)); END; /

  • Construya un bloque PLSQL que le permita mostrar el apellido y el sueldo total de un empleado XConstruya un bloque PLSQL que le permita mostrar en pantalla la frase: Hola mundo y que esta salga por la consola de comandos