¿Cuál es la diferencia entre función y procedimiento en PL/SQL?¿Cuál es la diferencia entre función y procedimiento en PL/SQL?
Respuesta
Un procedimiento no tiene un valor de retorno, mientras que una función tiene.
Ejemplo:
CREATE OR REPLACE PROCEDURE my_proc
(p_name IN VARCHAR2 := 'John') as begin ... end
CREATE OR REPLACE FUNCTION my_func
(p_name IN VARCHAR2 := 'John') return varchar2 as begin ... end
Aviso cómo la función tiene una cláusula de retorno entre la lista de parámetros y el "como" palabra clave. Esto significa que se espera que tenga la última declaración dentro del cuerpo de la función de leer algo como:
return(my_varchar2_local_variable);
Dónde my_varchar2_local_variable es un poco de varchar2 que debe ser devuelto por esta función.
Como aclaración, aún puede obtener valores OUT de un procedimiento; de hecho, puede tener un valor de retorno para cada parámetro OUT que especifique. – GoingTharn
Una función se puede alinear en una instrucción SQL, p. Ej.
select foo
,fn_bar (foo)
from foobar
Lo que no se puede hacer con un procedimiento almacenado. La arquitectura del optimizador de consultas limita lo que se puede hacer con las funciones en este contexto, que requieren que sean puras (es decir, las mismas entradas siempre producen la misma salida). Esto restringe lo que se puede hacer en la función, pero permite que se use en línea en la consulta si se define como "pura".
De lo contrario, una función (no necesariamente determinista) puede devolver una variable o un conjunto de resultados. En el caso de una función que devuelve un conjunto de resultados, puede unirlo con alguna otra selección en una consulta. Sin embargo, no puede usar una función no determinista como esta en una subconsulta correlacionada ya que el optimizador no puede predecir qué tipo de conjunto de resultados se devolverá (esto es computablemente intratable, como el problema de detención).
Puede que no tenga sentido, pero el optimizador no le impide utilizar funciones no deterministas en ninguna parte. –
- podemos llamar a un procedimiento almacenado dentro de Procedimiento almacenado, Función dentro de la función, StoredProcedure dentro de la función pero no podemos llamar a la función dentro del procedimiento almacenado.
- podemos llamar a la función dentro de la instrucción select.
- Podemos devolver el valor de la función sin pasar el parámetro de salida como un parámetro al procedimiento almacenado.
Esto es lo que la diferencia que he encontrado. Por favor, hágamelo saber si alguno.
Usted es incorrecto; no hay ninguna razón por la que no pueda llamar a una función de un procedimiento. –
Las siguientes son las principales diferencias entre el procedimiento y función,
- procedimiento se denomina bloque PL/SQL que realiza una o más tareas. donde la función se denomina bloque PL/SQL que realiza una acción específica.
- El procedimiento puede o no devolver el valor donde la función debe devolver un valor.
- podemos llamar a funciones en la declaración de selección, donde como procedimiento no podemos.
¿No puede una función realizar más de una "acción"? Retorna solo el tipo de datos. – Ben
En forma sencilla muertos que hace que este significado.
Funciones:
Estos subprogramas devuelven un solo valor ; utilizado principalmente para calcular y devolver un valor.
Procedimiento:
Estos subprogramas no devuelven un valor directamente; usado principalmente para realizar una acción.
Programa Ejemplo:
CREATE OR REPLACE PROCEDURE greetings
BEGIN
dbms_output.put_line('Hello World!');
END ;
/
ejecutar un procedimiento autónomo:
un procedimiento autónomo se puede llamar de dos maneras:
• Uso de la EXECUTE
palabra clave • Llamar a la nombre del procedimiento de un bloque PL/SQL
El procedimiento también se puede llamar desde otro bloque PL/SQL:
BEGIN
greetings;
END;
/
Función:
CREATE OR REPLACE FUNCTION totalEmployees
RETURN number IS
total number(3) := 0;
BEGIN
SELECT count(*) into total
FROM employees;
RETURN total;
END;
/
siguiente programa llama a la función totalCustomers
de un otro bloque
DECLARE
c number(3);
BEGIN
c := totalEmployees();
dbms_output.put_line('Total no. of Employees: ' || c);
END;
/
Ambos procedimientos y funciones almacenados se denominan bloacks que reside en el Da tabase y se puede ejecutar como y cuando sea necesario.
Las principales diferencias son:
1.A procedimiento almacenado puede, opcionalmente, los valores de retorno utilizando cabo parámetros, pero también puede ser escrito de una manera sin devolver un valor .Pero una función debe devolver un valor
2. Un procedimiento almacenado no se puede usar en una declaración select donde las funciones se pueden usar en una instrucción select.
Hablando en términos prácticos, iría por un procedimiento almacenado para un grupo específico de requisitos y una función para un requisito común que podría compartirse en múltiples escenarios para g: comparar dos cadenas, recortarlas o tomar la última parte, si tenemos una función para eso, podríamos usarla globalmente para cualquier aplicación que tengamos
En pocas palabras: la función devuelve algo. Puede usar la función en la consulta SQL. El procedimiento es parte del código para hacer algo con los datos, pero no puede invocar el procedimiento desde la consulta, debe ejecutarlo en el bloque PL/SQL.
- 1. ¿Cuál es la diferencia entre "función" y "función"? en VIM?
- 2. Cuál es la diferencia entre la función() {}() y la función() {}()
- 3. ¿Cuál es la diferencia entre función (myVar) y (función) myVar?
- 4. Cuál es la diferencia entre `$ (ventana) .load (función() {})` y `$ (función() {})`
- 5. ¿Cuál es la diferencia entre función y función
- 6. ¿Cuál es la diferencia entre el procedimiento y el procedimiento # 'en Lisp/Clojure?
- 7. ¿cuál es la diferencia entre declaración de función y firma?
- 8. ¿Cuál es la diferencia entre una subrutina y una función?
- 9. ¿Cuál es la diferencia entre un algoritmo y una función?
- 10. ¿Cuál es la diferencia entre un método y una función?
- 11. ¿cuál es la diferencia entre:.! y: r !?
- 12. diferencias entre el procedimiento y la función y la rutina?
- 13. ¿Cuál es la diferencia entre dict() y {}?
- 14. ¿Cuál es la diferencia entre + = y = +?
- 15. ¿Cuál es la diferencia entre ".equals" y "=="?
- 16. Cuál es la diferencia entre $ y jQuery
- 17. Cuál es la diferencia entre = y: =
- 18. Cuál es la diferencia entre $ (...) y `...`
- 19. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 20. ¿Cuál es la diferencia entre {0} y ""?
- 21. ¿Cuál es la diferencia entre .ToString (+) y ""
- 22. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 23. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 24. ¿Cuál es la diferencia entre " " y ""?
- 25. diferencia entre función y función &
- 26. ¿Cuál es la diferencia entre; y GO en procedimiento almacenado en SQL Server?
- 27. ¿Cuál es la diferencia entre strtok_r y strtok_s en C?
- 28. ARM: ¿Cuál es la diferencia entre APCS y AAPCS ABI?
- 29. ¿Cuál es la diferencia entre sort() y sort.list() en R?
- 30. ¿Cuál es la diferencia entre 'y #' en Lisp?
No estoy de acuerdo con que se trate de un duplicado. En general, los términos del lenguaje de programación, como el procedimiento y la función, no se utilizan de la misma manera en un sistema de base de datos. Esta es una buena pregunta, es solo que la respuesta es "la misma diferencia que con los lenguajes de programación: ver". –
¿Alguien tiene la lista de diferencias desde Oracle 11g y posterior? ¡Creo que ahora podemos usar cierta funcionalidad adicional en funciones! – MozenRath