/* @ej_funcion_1.sql */ SET ECHO ON SET SERVEROUTPUT ON SET LINESIZE 132 SET PAGESIZE 200 -- -- ejemplo sencillo de FUNCTION en PL/SQL -- La función igualNombProv devuelve el resultado de comparar los dos nombres de proveedor (cadenas -- de caracteres) suministradas como parámetros, sin distinguir entre mayúsculas y minúsculas CREATE OR REPLACE FUNCTION igualNombProv ( nom1 IN Proveedor.nombProv%TYPE, nom2 IN Proveedor.nombProv%TYPE) RETURN boolean IS resultado boolean; BEGIN resultado := nom1 = nom2; RETURN resultado; END igualNombProv; / SHOW ERRORS FUNCTION igualNombProv; -- prueba de la función implementada (no existe en SQL*PLUS el “tipo” boolean) -- -- declaración de una variable para guardar el resultado VARIABLE test varchar2(10); -- bloque PL/SQL para probar la función BEGIN IF igualNombProv('PEPE', 'PEPE') THEN :test := 'iguales'; ELSE :test := 'diferentes'; END IF; END; / -- mostrar el resultado de la ejecución del bloque print :test -- el bloque PL/SQL puede mostrar directamente mensajes -- además, se parametrizará la ejecución con nombres introducidos interacivamente BEGIN IF igualNombProv('&nomb1', '&nomb2') THEN DBMS_OUTPUT.PUT_LINE('los nombres son iguales'); ELSE DBMS_OUTPUT.PUT_LINE('los nombres son diferentes'); END IF; END; / popo popo / popo pope -- otros ejemplos de utilización de variables de sustitución SELECT * FROM &nombre ORDER BY &nombre; proveedor nombProv SELECT &&atrib FROM &&nombre WHERE &atrib='TUERCA'; nombPieza Pieza SELECT * FROM &nombre ORDER BY &atrib; undef nombre undef atrib