Sintaxis de procedimiento almacenado
El propósito de los procedimientos y funciones almacenados es ejecutar de manera reproducible una colección de declaraciones SQL que operan la base de datos.
La diferencia está en escribir y llamar.
Escritura: La lista de parámetros de un procedimiento almacenado puede tener parámetros de entrada, parámetros de salida y parámetros que pueden ser entrada y salida;
La lista de parámetros de una función solo tiene parámetros de entrada y tiene return lt; tipo de valor de retorno, sin especificación de longitud gt;.
Valor de retorno:
El valor de retorno de un procedimiento almacenado puede tener múltiples valores,
El valor de retorno de una función tiene solo un valor.
En términos de métodos de llamada:
Los métodos de llamada de procedimientos almacenados son:
1), exec lt; nombre del proceso gt;;
2), ejecute lt; nombre del proceso gt;;
3), llame directamente en el bloque de instrucciones PL/SQL.
Los métodos de llamada a funciones son:
Se llama directamente en el bloque de instrucciones PL/SQL.
Se divide específicamente en:
----Llamar a FUNCIÓN add_tres_números
----1 Llamar a la función usando representación de posición
BEGIN
dbms_output.put_line(add_tres_numbers(2, 4, 5));
END
----2.
COMENZAR
dbms_output.put_line(add_tres_números(b=gt; 3, a=gt; 4, c=gt; 2));
FIN;
----3. Mezcle notación posicional y notación con nombre para llamar a funciones
BEGIN
dbms_output.put_line(add_tres_numbers(3, b=gt; 4). , c=gt; 2));
END;
----4. Notación de exclusión
BEGIN
dbms_output. put_line(add_tres_numbers(12,c=gt;2));
END;
----5. Representación de llamadas SQL: representación mixta
SELECCIONE add_tres_números(3, b=gt; 4, c=gt; 2) FROM DUAL;
----1. Esta función acepta 3 parámetros opcionales y devuelve 3 números y
(
a NÚMERO:=0, b NÚMERO:=0, c NÚMERO:=0
)
EL NÚMERO DEVUELTO ES
COMIENZO
RETORNO a b c
FIN
PROCEDIMIENTO ALMACENADO:
Sintaxis básica:
crear procedimiento lt; nombre del procedimiento gt; (lt; lista de parámetros, ignorar gt si no hay parámetros;)
como|es
Declaración de variable , inicialización
comenzar
Procesamiento comercial, código lógico
excepción
Captura de excepciones, procesamiento de tolerancia a fallas
end lt; nombre del procedimiento gt;;
Parámetro: lt; nombre del parámetro gt; in|out|in out lt; sin especificación de longitud, como: v_name varchar2
in: parámetros de entrada
out: parámetros de salida
in out: parámetros de entrada y salida
Nota: as|is significa como o es
Sintaxis de llamada:
1), exec lt; nombre del proceso gt;;
2), ejecutar lt; nombre del proceso gt;; 3), llámelo directamente en el bloque de instrucciones PL/SQL.
Ejemplo:
crear o reemplazar el procedimiento up_wap(v_param1 in out varchar2, v_param2 in out varchar2)
es
v_temp varchar2( 20);
begin
dbms_output.put_line('Parámetro 1 antes del intercambio: '||v_param1||' Parámetro 2: '||v_param2);
v_temp:=v_param1;
v_param1:=v_param2;
v_param2:=v_temp;
dbms_output.put_line('Parámetro 1 después del intercambio:'|| v_param1||' Parámetro 2: '||v_param2);
excepción
cuando otros entonces dbms_output.put_line('¡Hay un error cuando se ejecuta el procedimiento up_wap!');
end up_wap;
/
-- Llamar al procedimiento almacenado
declarar
v_param1 varchar2(20): ='param1';
v_param2 varchar2(20):='param2';
comenzar
up_wap(v_param1 =gt; v_param1, v_param2 =gt; v_param2);
end;
/
Función personalizada (función)
Sintaxis básica:
crear función lt; nombre de la función gt; (lt; lista de parámetros, ignorar gt cuando no hay parámetros;)
devuelve lt; tipo de valor de retorno, sin descripción de longitud
como|es
Declaración de variable, inicialización
comenzar
Procesamiento comercial, código lógico
return lt; valor devuelto gt;; p>excepción
Captura de excepciones, procesamiento tolerante a fallas
end lt; nombre de la función gt;; >Nota: Sólo el tipo de parámetros de entrada.
La transferencia de parámetros (parámetros de entrada y parámetros de salida) en procedimientos almacenados y funciones personalizadas no puede usar la coincidencia de tipo o tipo de fila, y el valor nulo no se puede usar, pero los procedimientos almacenados pueden devolver valores nulos.
Ejemplo:
crear función uf_select_name_by_id_test(v_id en número)
devolver varchar2
es
v_name t_test .t_nametype;
comenzar
selecciona t_name en v_name de t_test donde t_id=v_id;
devuelve v_name;
excepción
cuando otros entonces dbms_output.put_line('error');
end uf_select_name_by_id_test;
/
seleccione uf_select_name_by_id_test(1) nombre de dual; -- seleccionar llamada
declarar --pl/sql llamada de bloque de sentencia
v_name varchar2(20);
comenzar
v_name: =uf_select_name_by_id_test(1);
dbms_output.put_line('name = '||v_name);
end;
/