Procedimientos almacenados y funciones

08/11/2003 - 13:46 por Miguel Tubia | Informe spam
Hola a todos,
me gustaría saber q diferencia hay entre procedimientos almacenados y
funciones. ¿Hay algo q se pueda hacer con una y no con otra? A la hora de
trabajar ¿alguna diferencia práctica real? ¿Se pueden llamar a las funciones
desde aplicaciones externas?
Gracias por resolverme estas dudas
Un saludo
 

Leer las respuestas

#1 Javier Loria
08/11/2003 - 15:24 | Informe spam
Hola Miguel:
Un procedimiento almacenado es una coleccion de sentencias de T-SQL que
se almacena en al servidor y sirven para encapsular tareas repetitivas.
Normalmente se usan para: seguridad, modularidad, desempeno y reducir el
trafico de red.
Las funciones vienen en 3 versiones.
Funciones Escalares: Parecidas a las funciones que vienen con el
sistema (SUBSTRING, YEAR, ROUND, etc.) y devuelven un valor.
Funciones En-Linea: Parecidas a las vistas pero con parametros.
Funciones Multi-Instruccion: Se usan parecidas a las vistas pero se
programan como procedimientos almacenados.
Las funciones tienen los mismos beneficios que los procedimientos, pero esta
enfatizada la parte de la Modularidad.
¿Hay algo q se pueda hacer con una y no con otra?


Hay algunas cosas que se pueden hacer con procedimientos almacenados que
no se pueden hacer con las funciones. En los BOL te indican lo que esta
permitido hacer un funciones:
==El cuerpo de una función de múltiples instrucciones permite las siguientes
instrucciones. Las instrucciones no incluidas en la lista no se permiten en
el cuerpo de una función:
Instrucciones de asignación.
Las instrucciones de control de flujo.
Instrucciones DECLARE que definen variables de datos y cursores que son
locales a la función.
Instrucciones SELECT que contienen listas de selección con expresiones que
asignan valores a las variables locales para la función.
Operaciones de cursor que hacen referencia a cursores locales que se
declaran, abren, cierran y cuya asignación se cancela en la función. Sólo se
permiten las instrucciones FETCH que asignan valores a las variables locales
mediante la cláusula INTO; no se permiten las instrucciones FETCH que
devuelven los datos al cliente.
Instrucciones INSERT, UPDATE y DELETE que modifican las variables table
locales para la función.
Instrucciones EXECUTE que llaman a procedimientos almacenados extendidos.
==>A la hora de trabajar ¿alguna diferencia práctica real?
En mi opinion, si. Los procedimientos sirven principalmente para cambiar el
estado de la BD (INSERT, DELETE, UPDATE), aun cuando pueden usarse para
obtener resultados.
Las funciones sirven para obtener resultados, las escalares como columnas en
un SELECT o WHERE y las en-Linea/Multi-Instruccion en el FROM.
¿Se pueden llamar a las funciones desde aplicaciones externas?


Si, pero por medio de un SELECT, no directamente.

Espero te sirva,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Miguel Tubia escribio:
Hola a todos,
me gustaría saber q diferencia hay entre procedimientos almacenados y
funciones. ¿Hay algo q se pueda hacer con una y no con otra? A la
hora de trabajar ¿alguna diferencia práctica real? ¿Se pueden llamar
a las funciones desde aplicaciones externas?
Gracias por resolverme estas dudas
Un saludo

Preguntas similares