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 solo 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 solo 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 datosmoney
. El procedimiento almacenado imprime la instrucciónProducts less than
concatenada con el parámetro de entrada que cambia del tipo de datosmoney
a un tipo de datos de caráctervarchar(10)
. A continuación, el procedimiento ejecuta una instrucciónSELECT
en la vista y le pasa el parámetro de entrada como parte de la cláusulaWHERE
. 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 que10.00
.EXECUTE pr_Names 10.00; GO
Siguiente tarea de la lección
Conceder acceso a un objeto de base de datos