Documentos de Académico
Documentos de Profesional
Documentos de Cultura
El comportamiento común de un parámetro es como entrada, ésto quiere decir que recibirá un
dato almacenado en el parámetro enviado desde el contexto en el que se llama a la función.
Si deseamos indicar explícitamente que deseamos el parámetro como de entrada debemos
adicionar la palabra reservada IN a la declaración del parámetro de la función.
15 CASE
16 WHEN P_OPERACION = '+' THEN
17 V_RESULTADO := P_NUMEROA + P_NUMEROB;
18
19 WHEN P_OPERACION = '-' THEN
20 V_RESULTADO := P_NUMEROA - P_NUMEROB;
21
22 WHEN P_OPERACION = '*' THEN
23 V_RESULTADO := P_NUMEROA * P_NUMEROB;
24
25 WHEN P_OPERACION = '/' THEN
26 -- Controlamos las divisiones por 0
27 IF P_NUMEROB = 0 THEN
28 V_RESULTADO := 0;
29 ELSE
30 V_RESULTADO := P_NUMEROA / P_NUMEROB;
31 END IF;
32
33 ELSE
34 -- En caso de que P_OPERACION contenga un caracter
35 -- que no sean +,-,* ó / se devolverá NULL
36 V_RESULTADO := NULL;
37 END CASE;
38
39 RETURN V_RESULTADO;
40 END;
FUNCTION OPERAR_NUMEROS compilado
Ahora crearemos un bloque PL/SQL anónimo para usarlo
37 '=' ||
38 V_RESULTADO);
39 END;
10+30=40
54*78=4212
23*56=1288
Parámetros de Salida
Los parámetros de salida permiten modificar el valor de una variable externa a la función
relacionada con el parámetro. De ésta manera si la función modifica el valor del parámetro, la
variable relacionada a éste parámetro tendrá el valor modificado inclusive después de que la
función haya terminado de ejecutarse.
Cuando un parámetro es del tipo salida, sólo se pueden pasar variables a la función, en caso
de intentar usar una constante el motor PL/SQL mostrará un error al momento de compilar la
función.
Para poder especificar un parámetro como del tipo salida, debemos usar la palabra reservada
OUT al momento de declarar el parámetro.
5 BEGIN
6 P_TEXTO := 'La fecha actual es ' || TO_CHAR(SYSDATE,'DD/MM/YYYY');
7 END;
PROCEDURE OBTENER_FECHA compilado
El procedimiento OBTENER_FECHA, muestra un ejemplo de parámetros de salida. El
01 DECLARE
02 V_FECHA VARCHAR2(200);
03 BEGIN
04
05 -- Pasamos la variable V_FECHA a la función HR.OBTENER_FECHA.
-- V_FECHA estará referenciada al parámetro P_TEXTO, cualquier
06
cambio
07 -- en P_TEXTO se verá reflejado en V_FECHA posteriormente.
08 HR.OBTENER_FECHA(V_FECHA);
09
10 DBMS_OUTPUT.PUT_LINE('Valor de V_FECHA: ' || V_FECHA);
11 END;
Valor de V_FECHA: La fecha actual es 08/05/2014
04 CREATE OR REPLACE PROCEDURE HR.REGISTRAR_CLIENTE(P_ID IN OUT NUMBE
R,
05 P_NOMBRES IN VARCHAR
2,
06 P_APELLIDOS IN VARCHAR
2,
07 P_FECHA IN DATE)
08 IS
09 V_CONTEO NUMBER;
10 BEGIN
11 -- Se busca si es que el ID existe.
12 SELECT COUNT(cli.id)
13 INTO V_CONTEO
14 FROM hr.cliente cli
15 WHERE cli.id = P_ID;
16
17 -- En caso de que V_CONTEO exista como ID
18 -- se creará un ID alternativo
25 P_ID := P_ID + 1;
07 HR.REGISTRAR_CLIENTE(V_ID,'Jhon', 'Quiroz', SYSDATE);
08 DBMS_OUTPUT.PUT_LINE('El valor de V_ID es: ' || V_ID);
09
10 -- Intentamos registrar otro cliente con el mismo ID.
11 HR.REGISTRAR_CLIENTE(V_ID,'Manuel', 'Prado', SYSDATE);
12 DBMS_OUTPUT.PUT_LINE('El valor de V_ID es: ' || V_ID);
13 END;
Insertado cliente: 12 Jhon Quiroz
El valor de V_ID es: 12
El id 12 ya existe.
http://jeanmazuelos.com/biblioteca/cursos/oracle-plsql-basico/capitulo-8-parametros-de-
entrada-y-salida
https://pro.arcgis.com/es/pro-app/help/analysis/geoprocessing/share-analysis/inputs-and-
outputs.htm