Вы находитесь на странице: 1из 14

UNIVERSIDAD NACIONAL DEL CEN

TRO DEL PERU


FACULTAD
INGENIERIA DE SISTEMAS

Gestin de Base de Datos

PROCEDIMIENTOS
ALMACENADOS

ING. RAFAEL ROJAS BUJAICO

Un procedimiento almacenado nos brinda la posibilidad


empaquetar cdigo T-SQL para ser reutilizado posteriormente.

de

La gran ventaja de utilizar procedimientos almacenados es que se


pre compilan en servidor, de esta manera, a partir de la segunda
vez que son invocados su funcionamiento es ms veloz.
Es por ello que cuando se desarrolla software generalmente se
utilizan procedimientos almacenados para acceder a la base de
datos.
La sintaxis de dicha instruccin es bsicamente
la siguiente:
CREATE PROCEDURE
Nombre_del_procedimiento
[Lista_de_parmetros]
AS (Sentencias SQL)
[RETURN [Valor]]
Donde:
Nombre_del_procedimiento
Identificador que determina el nombre
asignado al
procedimiento y que debe cumplir con la regla de
definicin
de identificadores establecidas.
Lista_de_parmetros
Parmetros definidos en el procedimiento con la
siguiente
sintaxis:
@nombre_var Tipo_var [OUTPUT]

El smbolo @ es necesario no slo en la declaracin sino que


forma parte del propio nombre.
La clausula OUPUT determina que dicho parmetro ser utilizado
para pasar informacin al cdigo llamador, es decir, viene a ser
un parmetro pasado por referencia
Dicha lista puede contener un mximo de 255 parmetros
Sentencias_SQL
cualquier

Como se explic anteriormente, el cuerpo del


procedimiento puede estar compuesto de
tipo de instruccin SQL, a excepcin de las
siguientes:
CREATE VIEW
CREATE DEFAULT
CREATE RULE
CREATE PROCEDURE
CREATE TRIGGER

RETURN [Valor] Un procedimiento almacenado puede devolver un


valor de
retorno de tipo integer, no nulo, que puede ser
rescatado por
el cdigo llamador para tener conocimiento
del resultado del
proceso de dicho procedimiento. Los
valores -1 al -99 estn
reservados por el sistema, as como el
0 que se interpreta
como finalizado con xito. Si no se
proporciona un cdigo
definido por el usuario, se utilizan los
del sistema.

Vamos a crear un procedimiento almacenado que permita mostrar


aquellos productos cuyo stock sea menor a 10 unidades, para ello
vamos a escribir las siguientes lneas de cdigo T-SQL:
CREATE PROCEDURE usp_Listar_Productos
AS
SELECT codigo, nombre, precio, stock,
descripcion, categoria
FROM tblproducto
WHERE stock<10
ORDER BY stock DESC

Presionamos F5 y el procedimiento
almacenado estar creado, podemos
verificarlo desplegando la carpeta Stored
Procedures ubicada en la carpeta
Programmability de nuestra base de
datos Ventas.

Para llamar al procedimiento almacenado que acabamos de crear,


simplemente utilizamos su nombre directamente. Abrimos una
nueva ventana de consulta y escribimos lo siguiente:
usp_Listar_Productos
Ejecutamos el cdigo e inmediatamente el procedimiento
almacenado nos muestra los productos cuyo stock sea menor a 10
unidades.

PARMETROS
En muchas ocasiones un procedimiento almacenado requiere datos
para cumplir su objetivo, estos datos reciben el nombre de
parmetros. Los parmetros se especifican luego de indicar el
nombre del procedimiento almacenado, veamos algunos ejemplos:
Procedimiento almacenado de insercin de
datos
Vamos a crear un procedimiento almacenado que permite insertar
datos en tblProducto, para ello utilizaremos INSERT INTO el cual
permite insertar datos en una tabla, abrimos una nueva ventana
de consulta y escribimos las siguientes lneas de cdigo:
CREATE PROCEDURE usp_Insertar_Producto
@codigo VARCHAR(10),@nombre VARCHAR(100),@precio
SMALLMONEY,@stock TINYINT,
@descripcion VARCHAR(250),@categoria TINYINT
AS
INSERT INTO tblProducto (codigo, nombre, precio, stock, descripcion,
categoria)
Ejecutamos
el cdigo
anterior
y ya tenemos
creado
el procedimiento
almacenado
VALUES
(@codigo,
@nombre,
@precio,
@stock,
@descripcion,
@categoria )
para insertar en tblProducto. Debemos comprender que luego de escribir INSERT
INTO se especifica el nombre de la tabla y luego entre parntesis se debe indicar
los campos en donde queremos insertar. A travs de VALUES especificamos los
valores que vamos a insertar a cada campo indicado luego del nombre de la tabla.

Recordemos que se debe respetar el orden entre los campos y los parmetros
que se especifican en INSERT INTO, observemos la siguiente imagen que
pertenece al cdigo del procedimiento almacenado creado anteriormente:

Aunque tambin pudimos haberlo realizado de la siguiente manera:

En conclusin, no importa el orden de los campos de la tabla, sino


importa el orden que se indica luego de especificar el nombre de la
tabla.
Para probar nuestro procedimiento almacenado vamos a abrir una
nueva ventana de consulta e invocamos a usp_Insertar_Producto
seguido de los parmetros que necesita, los parmetros que son de tipo
numrico se incluyen normalmente, mientras que los parmetros de
tipo cadena se deben indicar entre comillas simples.

usp_Insertar_Producto 'PROD07','Pepsi Personal',1.20,17,'Pepsi


personal',100

Procedimiento almacenado para


eliminar
Vamos a registros
crear un procedimiento almacenado que permita eliminar un
producto. Generalmente cuando se elimina datos se realiza por medio
de la llave primaria, ya que es el campo que identifica a un registro
especfico.
CREATE PROCEDURE
usp_Eliminar_Producto
@codigoProducto VARCHAR(10)
AS
DELETE FROM tblproducto
WHERE codigo=@codigoProducto
Ejecutamos el cdigo anterior, y luego en una nueva ventana de
consulta invocamos a nuestro procedimiento almacenado con el cdigo
del producto que queremos eliminar.
usp_Eliminar_Producto 'PROD07'

AMADAS A PROCEDIMIENTOS ALMACENADOS


La sintaxis de la llamada a un procedimiento almacenado, depende
de como se halla creado dicho procedimiento, por lo que en cada uno
de los ejemplos que siguen, se especifica la llamada al mismo,
ponindose de manifiesto dicha sintaxis en cada caso particular.
Procedimiento 1
Es un procedimiento simple, sin parmetros que devuelve un
conjunto de filas que cumplen siempre la misma condicin.
CREATE PROCEDURE
prod_1
AS
SELECT * FROM CLIENTES
Llamada:
EXECUTE prod_1

Procedimiento 2
Es un procedimiento que recibe dos parmetros de entrada,
correspondientes a un rango de cdigos de clientes, y devuelve el
conjunto de filas de la tabla CLIENTES cuyo cdigo se encuentra en el
rango determinado por los parmetros
CREATE PROCEDURE prod_2
@p_CodIniCHAR (6),
@p_CodFinCHAR (6)
AS
SELECT * FROM CLIENTE
WHERE IDCLIENTE BETWEEN @p_CodIni AND
@p_CodFin
Llamada
EXECUTE prod_2 000100, 000500

Procedimiento 3
Es un procedimiento que recibe un parmetro de entrada y uno de
salida. El parmetro de entrada corresponde a un cdigo de tipo de
producto y el de salida, el nmero de productos existentes, que
corresponden
a dicho tipo prod_3
CREATE PROCEDURE
@p_CodTipProd CHAR (3),
@p_NumProductos SMALLINT OUTPUT
AS
SELECT @p_NumProductos = COUNT(*)
FROM PRODUCTOS WHERE IDTIPROD =
@p_CodTipProd
Llamada
DECLARE @p_parmsal SMALLINT
EXECUTE prod_3 KBD, @p_parmsal
OUTPUT

Procedimiento 4
Es un procedimiento almacenado que realiza inserciones en una
tabla, con los valores devueltos por un subquery realizado sobre otra
tabla que tiene la misma estructura.
El valor devuelto por el procedimiento almacenado, es el nmero de
filas
insertadas.
CREATE
PROCEDURE
prod_4
AS
INSERT TIPSOPPRU
SELECT * FROM
TIPSOPORTE
RETURN @@ROWCOUNT
Llamada
DECLARE @p_retorno INTEGER
EXECUTE @p_retorno = prod_4

ROCEDIMIENTOS ALMACENADOS Y VISTAS


Si deseamos mostrar una lista de productos registrados en
tblProducto, podemos usar una vista o un procedimiento
almacenado.
Sin embargo, tenemos que recordar que una vista tiene la
capacidad de comportarse como tabla mientras que un
procedimiento almacenado no.
Por otro lado un procedimiento almacenado puede recibir
parmetros y una vista no.
En conclusin, para utilizar una vista o un procedimiento
almacenado debemos analizar muy bien el escenario que
estamos abordando para aplicar la solucin ms eficiente.

Вам также может понравиться