Usuarios de Oracle – Modificaciones
24/05/2010SQL – Cursores en Transact SQL
27/05/2010DEFINICIÓN:
Un procedimiento almacenado (stored procedure en inglés) es un programa (o procedimiento) el cual es almacenado físicamente en una base de datos. Su implementación varía de un manejador de bases de datos a otro. La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y sólo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.
COMO SE GENERAN:
Podemos crear un Stored Procedure a pelo o visualmente. Para ello podemos utilizar el Enterprise Manager o el Query Analizer de MsSQL
Si lo hacemos por el Enterprise Manager, encima de la base de datos, desplegaremos la carpeta de storeds, botón derecho y “New Stored Procedure”
El Enterprise Manager por defecto pone:
CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS
En Procedure Name colocamos el nombre del Stored que deseamos, y a continuación del AS las consultas que queramos:
CREATE PROCEDURE DIC_FORO
AS
SET NOCOUNT ON
SELECT Campos FROM Tabla With(NoLock)
SET NOCOUNT OFF
GO
Los Storeds admiten parámetros. Sirven para poder realizar querys más precisas.
Por ejemplo:
CREATE PROCEDURE DIC_FORO (@IdUsuario int=0)
AS SET NOCOUNT ON
SELECT * FROM Usuario With(NoLock) WHERE Usuario=@IdUsuario
SET NOCOUNT OFF
GO
También podemos utilizar parámetros de salida, para retornar datos. Para ello declararemos el parámetro como Output.
EJECUCIÓN
La forma más sencilla de ejecutar un Stored Procedure, es mediante el comando EXEC seguido del nombre del Stored Procedure:
EXEC PROCEDURE_NAME
si este tuviera parámetros, después del nombre irían los parámetros a continuación del nombre separados por coma. Pongamos un ejemplo de un Procedure con 3 parámetros:
EXEC PROCEDURE_NAME @Parametro1=valor1, @Parametro3=valor3
EXEC PROCEDURE_NAME valor1, null, valor3
En ocasiones nos podemos encontrar con la siguiente sentencia para ejecutar un Stored:
EXEC @RC = PROCEDURE_NAME Parametro1, Parametro2, Parametro_n
RC significa RowCount, y se declara para saber el número de filas que devuelve el Procedure. Previamente a la ejecución, debemos declarar esta variable mediante (@@Rowcount)
DECLARE @RC int
EXEC @RC = PROCEDURE_NAME Parametro1, Parametro2, Parametro_n