个性化阅读
专注于IT技术分析

SQL中用户定义的存储过程

本文概述

本教程涵盖以下主题。

  1. 建立表格
  2. 用户定义的存储过程
  3. 执行存储过程
  4. 带参数的存储过程
  5. 修改存储过程
  6. 删除存储过程
  7. 通过加密增加安全性

你将使用Microsoft SQL Server作为数据库。本教程中介绍的概念对于大多数关系数据库管理系统都是相同的, 但是语法不同, 尽管此处使用的想法适用于所有数据库。

存储过程是关系数据库管理系统(RDBMS)中SQL语句的块, 通常由程序员, 数据库管理员, 数据分析师编写, 并保存并重新用于多个程序。根据各种RDBMS, 它也可以具有不同的类型。但是, 在任何RDBMS中找到的两个最关键的存储过程如下。

  • 用户定义的存储过程
  • 系统存储过程

存储过程是准备好的已编译代码, 将其存储或缓存, 然后重新使用。你可以缓存代码以供重用, 这使可维护性变得更加容易, 即不需要多次更改即可维护安全性。

建立表格

现在, 你将如下创建一个名为table_Employees的表。

CREATE TABLE table_Employees
(
    EmployeeId INT PRIMARY KEY NOT NULL, EmployeeFirstName VARCHAR(25) NOT NULL, EmployeeLastName VARCHAR(25) NOT NULL, EmployeeGender VARCHAR(25) NOT NULL, EmployeeDepartmentID INT

)

该表包含有关特定公司员工的信息, 并包含以下列:

  1. EmployeeId:这是唯一的主键, 它是整数数据类型, 该值自动递增。
  2. EmployeeFirstName:这是员工的名字, 它是字符数据类型, 不应保留为空。
  3. EmployeeLast Name:这是员工的姓氏, 它是字符数据类型, 不应保留为空。
  4. EmployeeGender:它显示员工的性别, 也是一种字符类型。
  5. EmployeeDepartmentId:它是整数数据类型的雇员的ID。

你可以编写查询以将值插入表中。向表添加值的查询是:

    INSERT INTO <TABLE_NAME>(<COLUMNS_OF_TABLE>) VALUES(<CORRESPONDING_VALUES_TO_MATCH_COLUMN>)

将值插入表后, 将创建table_Employees。

用户定义的SQL存储过程1

创建用户定义的存储过程。

使用存储过程, 你只需编写一次查询, 查询的名称便可以保存并在需要时执行多次。通过执行查询, 你可以创建一个名为Programmabilty-> Stored Procedure的文件夹, 并且有一个名为dbo.uprocGetEmployees的文件。

创建存储过程的语法为:

CREATE PROCEDURE <<<procedure_name>>>
AS
BEGIN

   '''Required SQL Queries'''

END

你可以使用SQL语句创建存储过程, 如下所示。

创建过程procedure_name

创建PROC过程名称

另外, 你需要使用” sp_。”以外的其他命名约定来创建存储过程。示例中的存储过程的名称为:uprocGetEmployees。

用户定义的SQL存储过程2

执行存储过程

要执行存储过程, 可以使用以下三种方法之一, 然后按以下方式运行它。

  • 执行< >
  • 执行< >
  • < >

在上面的程序中, 你可以使用过程名称uprocGetEmployees并选择它以执行查询。

带参数的存储过程

存储过程可以接受单个和多个参数。如果你先了解多个参数, 则可以轻松理解单个参数。

用于创建具有多个参数的存储过程的语法为:

CREATE PROCEDURE <<procedure_name>> <<procedure_parameter>>
AS
    BEGIN
            <<sql_query>>
    END

该示例显示下面的文件夹中有一个更改。

雇员->可编程性->存储过程-> dbo.uprocGetEmployessGenderAndDepartment

用户定义的SQL存储过程3

这里的概念与Python, Java等通用编程语言中的函数非常相似。上面的程序具有名为” uprocGetEmployeesGenderAndDepartment”的函数或过程名称, 其参数名称为” @EmployeeGender”和” @EmployeeDepartmentId”。通过将所需的值传递给我们的过程, 可以通过以下两种方法之一完成此过程, 下面对此进行了说明。

该程序中的参数是@EmployeeGender和@EmployeeDepartmentId, 它们通过将值传递给参数而被”调用”。

可以通过以下两种方式之一指定该值。你可以使用它们之一来使用多个参数执行存储过程。

    通过在查询中指定参数名称并传递所需的值:

    用户定义的SQL存储过程4

    通过与查询的存储过程参数相匹配的位置, 并将所需的值传递给该参数:

    用户定义的SQL存储过程5

    修改存储过程

    你还可以使用ALTER PROCEDURE命令修改存储过程。

        ALTER PROCEDURE uprocGetEmployeesGenderAndDepartment
    @EmployeeGender nvarchar(25), @EmployeeDepartmentId int
    BEGIN
        SELECT EmployeeFirstName, EmployeeGender, EmployeeDepartmentId FROM table_Employees WHERE
        EmployeeGender = @EmployeeGender AND EmployeeDepartmentId = @EmployeeDepartmentId
    END
    

    删除存储过程

    可以使用以下命令快速删除存储过程:

    删除程序<>删除程序<>

    通过加密增加安全性

    左下图所示的锁定符号表示存储过程已加密, 可确保只有授权人员才能访问它。

    用户定义的SQL存储过程6

    总结

    你刚刚学习完用户存储过程的基础知识, 并且所涉及的主题在概念上与任何RDBMS相似。你可以通过参加srcmini的中级SQL Server课程来了解更多信息。另外, 以下”存储过程”教程也将很适合你的学习。

    赞(0)
    未经允许不得转载:srcmini » SQL中用户定义的存储过程

    评论 抢沙发

    评论前必须登录!