Tanto en los procedimientos almacenados como en las funciones, los parámetros pueden ser de entrada, salida o de entrada/salida:
IN (entrada): Son los parámetros que recibe la función al ser ejecutada para ser insertados en la base de datos o determinar una lógica de negocio. Son siempre parámetros de sólo lectura:
PROCEDURE PR_TEST(pVariable IN VARCHAR2)
BEGIN
INSERT INTO TABLE1(value1) VALUES (pVariable);
END PR_TEST;
OUT (salida): Parámetros que normalmente se cargan dentro del procedimiento almacenado para luego devolver un valor. Es un parámetro de sólo escritura y no tendrá valor hasta que se le asigne uno dentro del procedimiento:
PROCEDURE PR_TEST(pVariable OUT VARCHAR2)
BEGIN
SELECT VALUE INTO pVariable
FROM TABLA1
WHERE CONDICION = 1;
END PR_TEST;
IN/OUT (Entrada/Salida): La combinación de los dos anteriores. Se recibe un valor para luego modificarlo (o no) y devolverlo. Es un parámetro de lectura y escritura:
PROCEDURE PR_TEST(pVariable IN OUT VARCHAR2)
BEGIN
IF (pVariable = 'S') THEN
pVariable := 'N';
END IF;
END PR_TEST;