Unidad 9. Programación en TRANSACT SQL (II)


9.4. Crear y ejecutar un procedimiento

CREATE PROCEDURE

Para crear un procedimiento almacenado como hemos dicho se emplea la instrucción CREATE PROCEDURE:


    CREATE {PROC|PROCEDURE} [NombreEsquema.]NombreProcedimiento 

          [{@parametro tipo} [VARYING] [= valorPredet]  [OUT|OUTPUT] ] [,...n]

          AS {  <bloque_instrucciones> [ ...n] }[;]

      <bloque_instrucciones> ::= 

      {[BEGIN] instrucciones [END] }  

Las instrucciones CREATE PROCEDURE no se pueden combinar con otras instrucciones SQL en el mismo lote.
Después del verbo CREATE PROCEDURE indicamos el nombre del procedimiento, opcionalmente podemos incluir el nombre del esquema donde queremos que se cree el procedimiento, por defecto se creará en dbo. Ya que Sqlserver utiliza el prefijo sp_ para nombrar los procedimientos del sistema se recomienda no utilizar nombres que empiecen por sp_.
Como se puede deducir de la sintaxis (no podemos indicar un nombre de base de datos asociado al nombre del procedimiento) sólo se puede crear el procedimiento almacenado en la base de datos actual, no se puede crear en otra base de datos.
Si queremos definir un procedimiento temporal local el nombre deberá empezar por una almohadilla (#) y si el procedimiento es temporal global el nombre debe de empezar por ##.
El nombre completo de un procedimiento almacenado o un procedimiento almacenado temporal global, incluidas ##, no puede superar los 128 caracteres. El nombre completo de un procedimiento almacenado temporal local, incluidas #, no puede superar los 116 caracteres.

Transact-SQL permite abreviar la palabra reservada PROCEDURE por PROC sin que ello afecte a la funcionalidad de la instrucción.


    CREATE PROC Calcula_comision AS…   

Es equivalente a


    CREATE PROCEDURE calcula_comision  AS… 

@parametro:  representa el nombre de un parámetro. Se pueden declarar uno o más parámetros indicando para cada uno su nombre (debe de empezar  por arroba) y su tipo de datos, y opcionalmente un valor por defecto (=valorPredet) este valor será el asumido si en la llamada el usuario no pasa ningún valor para el parámetro. Un procedimiento almacenado puede tener un máximo de 2.100 parámetros.
Los parámetros son locales para el procedimiento; los mismos nombres de parámetro se pueden utilizar en otros procedimientos. De manera predeterminada, los parámetros sólo pueden ocupar el lugar de expresiones constantes; no se pueden utilizar en lugar de nombres de tabla, nombres de columna o nombres de otros objetos de base de datos.

VARYING Sólo se aplica a los parámetros de tipo cursor por lo que se explicará cuando se expliquen los cursores.
OUTPUT | OUT (son equivalentes)
Indica que se trata de un parámetro de salida. El valor de esta opción puede devolverse a la instrucción EXECUTE que realiza la llamada.
El parámetro variable OUTPUT debe definirse al crear el procedimiento y también se indicará en la llamada junto a la variable que recogerá el valor devuelto del parámetro. El nombre del parámetro y de la variable no tienen por qué coincidir; sin embargo, el tipo de datos y la posición de los parámetros deben coincidir a menos que se indique el nombre del parámetro en la llamada de la forma @parametro=valor.

Procedimiento básico


    CREATE PROCEDURE  Dice_Hola

      AS 

      PRINT ‘Hola’;

      GO           –-  Indicamos GO para cerrar el lote que crea el procedimiento y empezar  otro lote.

      EXEC Dice_Hola;  -- De esta forma llamamos al procedimiento  (se ejecuta).  

En este caso, como la llamada es la primera del lote (va detrás del GO) podíamos haber obviado la palabra EXEC y haber escrito directamente:


    Dice_Hola   
Febrero-2010
Pág. 9.2

Atrás  Inicio  Adelante



.