SQL> /* @ej_funcion_1.sql */ SQL> SET ECHO ON SQL> SET SERVEROUTPUT ON SQL> SET LINESIZE 132 SQL> SET PAGESIZE 200 SQL> -- SQL> -- ejemplo sencillo de FUNCTION en PL/SQL SQL> -- La funci¢n igualNombProv devuelve el resultado de comparar los dos nombres de proveedor (cadenas SQL> -- de caracteres) suministradas como par metros, sin distinguir entre may£sculas y min£sculas SQL> CREATE OR REPLACE FUNCTION igualNombProv ( 2 nom1 IN Proveedor.nombProv%TYPE, 3 nom2 IN Proveedor.nombProv%TYPE) 4 RETURN boolean 5 IS 6 resultado boolean; 7 BEGIN 8 resultado := nom1 = nom2; 9 RETURN resultado; 10 END igualNombProv; 11 / FUNCTION de nombre IGUALNOMBPROV se ha creado Function created. SQL> SHOW ERRORS FUNCTION igualNombProv; No errors. SQL> SQL> -- prueba de la funci¢n implementada (no existe en SQL*PLUS el "tipo" boolean) SQL> -- SQL> -- declaraci¢n de una variable para guardar el resultado SQL> VARIABLE test varchar2(10); SQL> SQL> -- bloque PL/SQL para probar la funci¢n SQL> BEGIN 2 IF igualNombProv('PEPE', 'PEPE') THEN 3 :test := 'iguales'; 4 ELSE 5 :test := 'diferentes'; 6 END IF; 7 END; 8 / PL/SQL procedure successfully completed. SQL> SQL> -- mostrar el resultado de la ejecuci¢n del bloque SQL> print :test TEST -------------------------------- iguales SQL> SQL> -- el bloque PL/SQL puede mostrar directamente mensajes SQL> -- adem s, se parametrizar  la ejecuci¢n con nombres introducidos interacivamente SQL> BEGIN 2 IF igualNombProv('&nomb1', '&nomb2') THEN 3 DBMS_OUTPUT.PUT_LINE('los nombres son iguales'); 4 ELSE 5 DBMS_OUTPUT.PUT_LINE('los nombres son diferentes'); 6 END IF; 7 END; 8 / Enter value for nomb1: popo Enter value for nomb2: popo old 2: IF igualNombProv('&nomb1', '&nomb2') THEN new 2: IF igualNombProv('popo', 'popo') THEN los nombres son iguales PL/SQL procedure successfully completed. SQL> SQL> / Enter value for nomb1: popo Enter value for nomb2: pope old 2: IF igualNombProv('&nomb1', '&nomb2') THEN new 2: IF igualNombProv('popo', 'pope') THEN los nombres son diferentes PL/SQL procedure successfully completed. SQL> SQL> -- otros ejemplos de utilizaci¢n de variables de sustituci¢n SQL> SELECT * FROM &nombre 2 ORDER BY &nombre; Enter value for nombre: proveedor old 1: SELECT * FROM &nombre new 1: SELECT * FROM proveedor Enter value for nombre: nombProv old 2: ORDER BY &nombre new 2: ORDER BY nombProv CLVPROV NOMBPROV ---------- -------------------------------- 2 LUIS 3 MARIANO 1 PEREZ SQL> SQL> SELECT &&atrib FROM &&nombre WHERE &atrib='TUERCA'; Enter value for atrib: nombPieza Enter value for nombre: Pieza old 1: SELECT &&atrib FROM &&nombre WHERE &atrib='TUERCA' new 1: SELECT nombPieza FROM Pieza WHERE nombPieza='TUERCA' NOMBPIEZA -------------------------------- TUERCA TUERCA TUERCA SQL> SQL> SELECT * FROM &nombre ORDER BY &atrib; old 1: SELECT * FROM &nombre ORDER BY &atrib new 1: SELECT * FROM Pieza ORDER BY nombPieza CLVPIEZA NOMBPIEZA COLOR NUMPROV ---------- -------------------------------- -------------------------------- ---------- 96 PALANCA 0 93 TORNILLO AZUL 1 94 TORNILLO ROJIZO 1 97 TUBO GRIS 0 91 TUERCA ROJIZO 2 95 TUERCA AZUL 2 92 TUERCA VERDE 2 7 rows selected. SQL> SQL> undef nombre SQL> undef atrib SQL> spool off