创建视图和存储过程

现在 Mary 可以访问 TestData 数据库,你可能想要创建一些数据库对象,例如视图和存储过程,然后授予 Mary 访问它们的权限。 视图是存储的 SELECT 语句,而存储过程是以批处理方式执行的一条或多条 Transact-SQL 语句。

视图查询类似于表,不接受参数。 存储过程比视图更复杂。 存储过程可以同时具有输入参数和输出参数,并可以包括控制代码流的语句,如 IF 和 WHILE 语句。 将存储过程用于数据库中的所有重复操作,是一个良好的编程做法。

对于此示例,将使用 CREATE VIEW 创建一个视图,该视图仅选择 “产品 ”表中的两列。 然后,将使用 CREATE PROCEDURE 创建一个存储过程,该存储过程接受价格参数,并仅返回那些成本低于指定参数值的这些产品。

创建视图

  1. 执行以下语句以创建一个非常简单的视图,该视图执行 select 语句,并将产品的名称和价格返回给用户。

    CREATE VIEW vw_Names  
       AS  
       SELECT ProductName, Price FROM Products;  
    GO  
    
    

测试视图

  1. 视图的处理方式与表类似。 使用 SELECT 语句访问视图。

    SELECT * FROM vw_Names;  
    GO  
    
    

创建存储过程

  1. 以下语句创建一个名为 pr_Names的存储过程,接受名为 @VarPrice 、数据类型为 money的输入参数。 该存储过程打印与输入参数(已从 Products less than 数据类型更改为 money 字符数据类型)串联的语句 varchar(10) 。 然后,该存储过程对视图执行 SELECT 语句,将输入参数作为 WHERE 子句的一部分进行传递。 这将返回价格小于输入参数值的所有产品。

    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  
    
    

测试存储过程

  1. 若要测试存储过程,请键入并执行以下语句。 存储过程应该返回在第 1 课中向 Products 表中输入的、其价格小于 10.00的两个产品的名称。

    EXECUTE pr_Names 10.00;  
    GO  
    
    

课程中的下一个任务

授予对数据库对象的访问权限

另请参阅

CREATE VIEW (Transact-SQL)
CREATE PROCEDURE(Transact-SQL)