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
    

Siguiente tarea de la lección

Conceder acceso a un objeto de base de datos