Crear vistas y procedimientos almacenados
Ahora que Mary puede tener acceso a la base de datos TestData, puede que desee crear algunos objetos de base de datos, como una vista o un procedimiento almacenado y concederle a Mary acceso a los mismos. Una vista es una instrucción SELECT almacenada y un procedimiento almacenado es una o varias instrucciones Transact-SQL que se ejecutan como un lote.
Las vistas se consultan como las tablas y no aceptan parámetros. Los procedimientos almacenados son más complejos que las vistas. Los procedimientos almacenados pueden tener parámetros de entrada y salida y pueden contener instrucciones para controlar el flujo del código, como instrucciones IF y WHILE. Una práctica recomendable de programación es usar procedimientos almacenados para realizar todas las tareas repetitivas en la base de datos.
Para este ejemplo, usará CREATE VIEW para crear una vista que seleccione sólo dos de las columnas de la tabla Products. A continuación, usará CREATE PROCEDURE para crear un procedimiento almacenado que acepta un parámetro de precio y devuelve sólo los productos cuyo costo es menor que el valor del parámetro especificado.
Para crear una vista
Ejecute la instrucción siguiente para crear una vista muy sencilla que ejecuta una instrucción SELECT y devuelve los nombres y los precios de nuestros productos al usuario.
CREATE VIEW vw_Names AS SELECT ProductName, Price FROM Products; GO
Pruebe la vista
Las vistas se tratan como tablas. Use una instrucción SELECT para tener acceso a la vista.
SELECT * FROM vw_Names; GO
Para crear un procedimiento almacenado
La siguiente instrucción crea un procedimiento almacenado denominado pr_Names, acepta un parámetro de entrada denominado @VarPrice del tipo de datos money. El procedimiento almacenado imprime la instrucción Products less than concatenada con el parámetro de entrada que cambia del tipo de datos money a un tipo de datos de carácter varchar(10). A continuación, el procedimiento ejecuta una instrucción SELECT en la vista y le pasa el parámetro de entrada como parte de la cláusula WHERE. Esto devuelve todos los productos cuyo costo es menor que el valor del parámetro de entrada.
CREATE PROCEDURE pr_Names @VarPrice money AS BEGIN -- The print statement returns text to the user PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10)); -- A second statement starts here SELECT ProductName, Price FROM vw_Names WHERE Price < @varPrice; END GO
Probar el procedimiento almacenado
Para probar el procedimiento almacenado, escriba y ejecute la instrucción siguiente. El procedimiento debe devolver los nombres de dos productos introducidos en la tabla Products en la lección 1 con un precio menor que 10.00.
EXECUTE pr_Names 10.00; GO
Vea también