使用存储过程

作者:IIS 团队

先决条件

本演练假定使用以下环境:

  1. Web 服务器上已安装 IIS 数据库管理器。
  2. 数据库服务器(可与 Web 服务器驻留在同一物理计算机上)

做好准备

本演练中的说明足够通用,可应用于任何数据库部署。 我们将使用在另一个演练“使用表”中创建的表,演示如何创建新存储过程以及如何管理和删除现有存储过程。

创建新存储过程

根据前面的示例,我们将创建一个存储过程,用于显示“FabrikamUsers”和“AccessControls”表中的数据。 存储过程将检索与用户名关联的所有资源。 创建新存储过程:

  1. 打开“Internet Information Services (IIS)管理器” 。

  2. 转到数据库管理器并展开数据库连接节点(有关创建数据库连接的详细信息,请参阅 IIS 数据库管理器基础知识)。

  3. 在“存储过程”节点上,右键单击并选择“新建存储过程”。 此时会打开新的查询编辑器,其中预先填充了“CREATE PROCEDURE”模板以帮助你入门。
    Screenshot of the Database Manager page. The Database Connections node is expanded. Stored Procedures is selected. New Stored Procedure is highlighted.

  4. 将“Procedure_Name”替换为“GetUserResources”。

  5. 将参数模板文本替换为我们需要的唯一参数的文本:

    @Username VARCHAR(50)
    
  6. 在存储过程的正文中,在 BEGIN 和 END 之间键入以下查询:

    SELECT FabrikamUsers.Username, AccessControls.ResourceURL, AccessControls.IsUserAllowed
    FROM FabrikamUsers
    INNER JOIN AccessControls ON (FabrikamUsers.UserId = AccessControls.UserId)
    WHERE FabrikamUsers.Username = @Username
    

    Screenshot of the Database Manager page.the query open bracket exclamation mark code dash s q l Main close bracket is written between BEGIN and END in the procedure.

  7. 单击查询编辑器工具栏上的“执行”。 现在将创建存储过程。 可以通过检查“存储过程”节点下的存储过程列表来确认是否已创建存储过程。

    注意

    在这种情况下,“执行”按钮将运行 CREATE PROCEDURE 脚本,并充当存储过程的保存机制。

    Screenshot of teh Database manager page. Stored Procedures is selected. Execute is highlighted.

修改现有存储过程

使用数据库管理器可在创建存储过程后对其进行更改。 我们将使用之前“创建新存储过程”中的示例演示如何编辑存储过程。 我们将向“GetUserResources”存储过程添加额外的参数。 编辑存储过程:

  1. 打开“Internet Information Services (IIS)管理器” 。

  2. 转到数据库管理器并展开数据库连接节点(有关创建数据库连接的详细信息,请参阅 IIS 数据库管理器基础知识)。

  3. 展开“存储过程”节点。 现在应会看到所有数据库存储过程的列表,包括“GetUserResources”。

  4. 选择“GetUserResources”存储过程。

  5. 在数据库管理器工具栏上,选择“编写为 ALTER 脚本”。 此时会打开查询编辑器,其中预先填充了修改存储过程所需的 ALTER PROCEDURE 模板。
    Screenshot of the Database Manager page. d b o dot Get User Resources is selected. Script as ALTER is highlighted.

  6. 在“@Username”参数下,使用以下文本添加额外的参数:

    @Username VARCHAR(50), @IsUserAllowed BIT
    

    注意

    不要忘记在第一个变量后面添加逗号。

  7. 在存储过程的正文中,在 BEGIN 和 END 之间按如下所示修改查询:

    SELECT FabrikamUsers.Username, AccessControls.ResourceURL, AccessControls.IsUserAllowed
    FROM FabrikamUsers
    INNER JOIN AccessControls ON (FabrikamUsers.UserId = AccessControls.UserId)
    WHERE FabrikamUsers.Username = @Username 
    AND AccessControls.IsUserAllowed = @IsUserAllowed
    

    Screenshot of the Database Manager page. The connections navigation tree is expanded. The Execute button can be found on the query editor toolbar at the top.

  8. 单击查询编辑器工具栏上的“执行”。 现在将更改存储过程。

    注意

    在这种情况下,“执行”按钮将运行 ALTER PROCEDURE 脚本,并充当存储过程修改的保存机制。

  9. 可以继续在编辑器中进行更多更改或关闭编辑器。

基于现有存储过程创建新存储过程

使用数据库管理器可基于现有存储过程的代码创建新存储过程。 此功能可与存储过程的“另存为…” 操作进行比较。 基于现有存储过程创建新存储过程:

  1. 打开“Internet Information Services (IIS)管理器” 。

  2. 转到数据库管理器并展开数据库连接节点(有关创建数据库连接的详细信息,请参阅 IIS 数据库管理器基础知识)。

  3. 展开“存储过程”节点。 现在应会看到所有数据库存储过程的列表。

  4. 选择要作为新存储过程基础的现有存储过程。

  5. 在数据库管理器工具栏上,单击“编写为 CREATE 脚本”。 此时会打开查询编辑器,其中预先填充了 CREATE 存储过程,其签名和正文与现有存储过程相同。
    Screenshot of the Database Manager toolbar. d b o dot Get User Resources is selected. Script as CREATE is highlighted.

  6. 通过更改第一行 CREATE PROCEDURE 后面的名称来重命名该过程。
    Screenshot of the Database Manager. Create Procedure is highlighted.

  7. 对存储过程进行更改,然后单击“执行”。 新存储过程已创建,可以通过确保它显示在“存储过程”节点下进行确认。

    注意

    如果不更改存储过程的名称,将无法执行语句。

执行存储过程

使用数据库管理器可以执行存储过程。 例如,我们将运行“GetUserResources”存储过程并显示结果。 执行存储过程:

  1. 打开“Internet Information Services (IIS)管理器” 。
  2. 转到数据库管理器并展开数据库连接节点(有关创建数据库连接的详细信息,请参阅 IIS 数据库管理器基础知识)。
  3. 展开“存储过程”节点。 现在应会看到所有数据库视图的列表,包括“GetUserResources”。
  4. 选择“GetUserResources”存储过程。
  5. 在数据库管理器工具栏上,选择“执行存储过程”。 此时会打开一个对话框,要求填写存储过程参数。
    Screenshot of the Database Manager toolbar and navigation tree. Execute Stored Procedure in the toolbar is highlighted. Under Stored Procedures in the navigation tree, d b o dot Get User Resources is selected.
  6. 输入存储过程调用的参数,然后单击“确定”关闭对话框。 对于“GetUserResources”,必须为 username 输入 VARCHAR 值,为 IsUserAllowed 参数输入布尔值。
    Screenshot of the Execute Procedure d b o dot Get User Resources dialog box. V A R C H A R is written in the username row in the Data Type column. A boolean value b i t is written in the Is User Allowed row in the Data Type column.
  7. 此时会打开查询编辑器窗口,其中预先填充了用于调用存储过程的 EXEC 语句。 下部窗格包含存储过程返回的结果。
    Screenshot of a query editor window. An EXEC statement is written. The lower pane contains the results of the stored procedure.
  8. 可以在编辑器中修改参数值,然后再次执行查询。

删除现有存储过程

使用数据库管理器可以删除现有存储过程。 删除存储过程:

  1. 打开“Internet Information Services (IIS)管理器” 。
  2. 转到数据库管理器并展开数据库连接节点(有关创建数据库连接的详细信息,请参阅 IIS 数据库管理器基础知识)。
  3. 展开“存储过程”节点。 现在应会看到所有数据库存储过程的列表。
  4. 选择要删除的存储过程。
  5. 右键单击并选择“删除”。 系统将提示你确认此操作。
    Screenshot of the Database Manager toolbar and navigation tree. Under Stored Procedures, d b o dot Get User Resources is selected. A menu is opened and the Delete option is highlighted.
  6. 如果选择“是”,则会删除存储过程。 可以通过检查“存储过程”节点下的存储过程列表来确认是否已删除存储过程。