Make your own free website on Tripod.com
PARAMETROS

Procedimientos Almacenados

Un Procedimientos Almacenados (stored Procedure) es un programa Transact-SQL, que se almacena en una base de datos SQL Server,. Un Procedimientos Almacenados esta compuesto por comandos SQL, variables y comandos de flujo lógico. Puede ejecutarse manualmente o invocarse por otros programas. Los Procedimientos Almacenados de SQL aceptan parámetros de entrada y pueden retornar varios valores como parámetros de salida para el programa que lo invocó.
Un Procedimientos Almacenados puede llamar a otro Procedimientos Almacenados . El mismo puede retornar un valor de estado, indicando si fue ejecutado con éxito o cuál fue la causa del fracaso.

Estructura de un procedimiento Almacenado

La creación de un procedimiento almacenado involucra la especificación del nombre del procedimiento, sus parámetros y el cuerpo que contienen los comandos de SQL que se ejecutaran.

Línea Significado

CREATE procedure ej3 Crea el procedimiento llamado eje3
@cantidadporunidad nvarchar (50)as Crea el parámetro llamado @cantidadporunidad
select nombreproducto,cantidadporunidadfrom productoswhere cantidadporunidad like @cantidadporunidad Cuerpo del procedimiento
return Termina la ejecución del procedimiento.


Tipos de Procedimientos Almacenados

Los Procedimientos Almacenados pueden dividirse en Procedimientos Almacenados locales, almacenados en el servidor local, o remotos, almacenados en otro servidor. También puede clasificarse en Procedimientos Almacenados definidos por el usuario, y en procedimientos almacenados del sistema (system stored procedures).

Parámetros

Por medio de los parámetros es posible establecer una comunicación entre un procedimiento almacenado y el mundo exterior. Cuando un programa ejecuta un procedimiento almacenado, el mismo puede pasar valores al procedimiento para ejecutar su tarea. Un procedimiento almacenado puede contener hasta 255 parámetros y un código de retorno. Los parámetros deben de tener un nombre único y comenzar con el símbolo @ .

Tipos de Parámetro

Todos los parámetros se consideran como parámetros de entrada, es decir reciben datos del programa que invocó al procedimiento almacenado. Adicionando la palabra OUTPUT

Las ventajas de utilizar procedimientos almacenados en SQL Server consisten en que:
· Permiten una programación modular.
Puede crear el procedimiento una vez, almacenarlo en la base de datos, y llamarlo desde el programa el número de veces que desee.
· Permiten una ejecución más rápida.
Los procedimientos son analizados y optimizados en el momento de su creación, y es posible utilizar una versión del procedimiento que se encuentra en la memoria después de que se ejecute por primera vez.
· Pueden reducir el tráfico de red.
Una operación que necesite centenares de líneas de código Transact-SQL puede realizarse mediante una sola instrucción que ejecute el código en un procedimiento, en vez de enviar cientos de líneas de código por la red.
· Pueden utilizarse como mecanismo de seguridad.
Es posible conceder permisos a los usuarios para ejecutar un procedimiento almacenado, incluso si no cuentan con permiso para ejecutar directamente las instrucciones del procedimiento.
Para crear un procedimiento almacenado de SQL Server se utiliza la instrucción CREATE PROCEDURE de Transact-SQL; asimismo, puede utilizarse la instrucción ALTER PROCEDURE para modificar la instrucción. La definición del procedimiento almacenado contiene dos componentes principales: la especificación del nombre del procedimiento y sus parámetros, y el cuerpo del procedimiento que contiene las instrucciones de Transact-SQL que pueden realizar las operaciones del procedimiento.

Crear un procedimiento almacenado

Puede crear procedimientos almacenados mediante la instrucción CREATE PROCEDURE de Transact-SQL. Antes de crear un procedimiento almacenado, tenga en cuenta lo siguiente:
· Las instrucciones CREATE PROCEDURE no se pueden combinar con otras instrucciones SQL en el mismo lote.
· De forma predeterminada, el permiso para crear procedimientos almacenados corresponde al propietario de la base de datos, que puede transferirlo a otros usuarios.
· Los procedimientos almacenados son objetos de base de datos, y sus nombres deben ajustarse a las reglas para los identificadores.
· Sólo puede crear un procedimiento almacenado en la base de datos actual.
Cuando cree un procedimiento almacenado, deberá especificar lo siguiente:
· Todos los parámetros de entrada y de salida del lote o del procedimiento que realiza la llamada.
· Las instrucciones de programación que realicen operaciones en la base de datos, incluidas las llamadas a otros procedimientos.
· El valor de estado devuelto al lote o al procedimiento que realiza la llamada para indicar que la operación se ha realizado correctamente o que se ha producido un error (y el motivo del mismo). ejm:

/* crear un procedimiento almacenado que cuando cumpla 18 años salga ciudadano sino que salga menor de edad*/

declare @edad int
set @edad=10
if @edad>=18
print 'ciudadano'

else
print 'menor de edad'
create procedure ejemplo_if
@edad int
as
if @edad >=18
print 'ciudadano'
else
print 'menor de edad'
return
execute ejemplo_if 19
execute ejemplo_if 25
execute ejemplo_if 30
execute ejemplo_if 13
execute ejemplo_if 15
go

/*crear un procedimiento almacenado que cuando cumpla 18 años salga ciudadano,dni,sufragio sino que salga menor de edad*/

create procedure ejemplo_begin
@edad int
as
if @edad>=18
begin
print 'ciudadano'
print 'dni'
print 'sufragio'
end
else
begin
print 'menor de edad'
print 'partida de nacimiento'
end
go
execute ejemplo_begin 25
execute ejemplo_begin 10

/*crear un procedimiento almacenado y que indique el nro de asientos por medio de parametros y devolver mensaje indicando la ubicación del asiento*/

create procedure asientos
@nro int
as
if @nro%2=0
print 'pasillo'
else
print 'ventana'
return
execute asientos 2
execute asientos 15

/* prepare unprocedimiento almacenado que recepcione el turno (mañana, tarde, noche)
que envie el mensaje de la hora de entrada , la duración de descanso y la hora de salida*/

create procedure turno
@turno varchar(6)
as
if @turno='mañana'
begin
print 'entrada:8:15a.m'
print 'descanso:10:15a.m_10:30a.m'
print 'salida:1:15p.m'
end
else
if @turno='tarde'
begin
print 'entrada:1:15p.m'
print 'descanso:4:15p.m_4:30p.m'
print 'salida:6:15p.m'
end
else
if @turno='noche'
begin
print 'entrada:6:30p.m_10:15p.m'
print 'descanso:8:15p.m_10:15p.m'
print 'salida10:15p.m'
end
return
execute turno mañana
execute turno tarde
execute turno noche

/* Deacuerdo con el nro de trimestre mostrar los empleados nacidos en el trimestre correspondiente*/

select * from Employees
create procedure trimestre
@nro int
as
if @nro=1
select * from employees where month(birthdate)between 1 and 3
else
if @nro=2
select * from employees where month(birthdate) between 1 and 3
else
if @nro=3
select * from employees where month(birthdate)between 1 and 3
else
if @nro=4
select * from employees where month(birthdate)between 1 and 3
else
print 'error'
return
execute trimestre 1

/* Proporciona una fecha y avisar a que estación pertenece */

create procedure estacion
@f datetime
as
declare @mes int,@dia int
set @mes=month(@f)
set @dia=day(@f)
if (@mes=9 and @dia>=23)or (@mes between 10 and 11)or(@mes=12 and @dia<=22)
print 'primavera'
else
if (@mes=12 and @dia>=23)or (@mes between 1 and 2)or(@mes=3 and @dia<=22)
print 'verano'
else
if (@mes=3 and @dia>=23)or (@mes between 4 and 5)or(@mes=6 and @dia<=22)
print 'otoño'
else
if (@mes=6 and @dia>=23)or (@mes between 7 and 8)or(@mes=9 and @dia<=22)
print 'invierno'
return
execute estacion '12/8/2003'
execute estacion '10/11/2000'




REGRESAR

©Copyright Derechos Reservados
Lizett Angel Torres
AV.Los Paujiles 138
Lima-Perú