编辑: 无理的喜欢 | 2019-07-18 |
198 ? ENCRYPTION:表示 SQL Server
2016 加密后的 syscomments 表,该表的 text 字段是包含 CREATE PROCEDURE 语句的存储过程文本.使用 ENCRYPTION 关键字无法通过查看 syscomments 表来查 看存储过程的内容. ? FOR REPLICATION:用于指定不能在订阅服务器上执行为复制创建的存储过程.使用此选项创建 的存储过程可用作存储过程筛选,且只能在复制过程中执行.本选项不能和 WITH RECOMPILE 选 项一起使用. ? AS:用于指定该存储过程要进行的操作. ? sql_statement:是存储过程中要包含的任意数目和类型的 Transact-SQL 语句.但有一些限制. 13.3.3 创建不带参数的存储过程 最简单的一种自定义存储过程就是不带参数的存储过程, 下面介绍如何创建一个不带参数的存储过程. 【例13-2】创建查看 mydbase 数据库中 employee 表的存储过程,SQL 语句如下: USE mydbase;
GO CREATE PROCEDURE Proc_emp_01 AS SELECT * FROM employee;
GO 单击 执行 按钮,即可完成存储过程的创建操作,执行结果如图 13-7 所示. 另外,存储过程可以是很多语句的复杂组合,其本身也可以调用其他函数,来组成更加复杂的操作. 【例13-3】创建一个获取 employee 表记录条数的存储过程,名称为 Count_Proc,SQL 语句如下: USE mydbase;
GO CREATE PROCEDURE Count_Proc AS SELECT COUNT(*) AS 总数 FROM employee;
GO 输入完成之后,单击 执行 按钮,即可完成存储过程的创建操作,执行结果如图 13-8 所示. 图13-7 创建不带参数的存储过程 图13-8 创建存储过程 Count_Proc 13.3.4 创建带输入参数的存储过程 在设计数据库应用系统时,可能会需要根据用户的输入信息产生对应的查询结果,这时就需要把用户 的输入信息作为参数传递给存储过程,即开发者需要创建带输入参数的存储过程. 【例13-4】创建存储过程 Proc_emp_02,根据输入的员工编号,查询员工的相关信息,如姓名、所在职 位与基本工资,SQL 语句如下: 第13 章 存储过程的应用
199 USE mydbase;
GO CREATE PROCEDURE Proc_emp_02 @sID INT AS SELECT * FROM employee WHERE e_no=@sID;
GO 输入完成之后, 单击 执行 按钮, 即可完成存储过程的创建操作, 该段代码创建一个名为 Proc_emp_02 的存储过程,使用一个整数类型的参数@sID 来执行存储过程,如图 13-9 所示. 【例13-5】创建带默认参数的存储过程 Proc_emp_03,输入语句如下: USE mydbase;
GO CREATE PROCEDURE Proc_emp_03 @sID INT=101 AS SELECT * FROM employee WHERE e_no=@sID;
GO 输入完成之后,单击 执行 按钮,即可完成带默认输入参数存储过程的创建操作,该段代码创建的 存储过程在调用时即使不指定参数值也可以返回一个默认的结果集,如图 13-10 所示. 图13-9 创建存储过程 Proc_emp_02 图13-10 创建存储过程 Proc_emp_03 13.3.5 创建带输出参数的存储过程 存储过程中的默认参数类型是输入参数,如果要为存储过程指定输出参数,还要在参数类型后面加上 OUTPUT 关键字. 【例13-6】定义存储过程 Proc_emp_04,根据用户输入的部门编号,返回该部门中员工的个数,SQL 语句如下: USE mydbase;
GO CREATE PROCEDURE Proc_emp_04 @sID INT=1, @employeecount INT OUTPUT AS SELECT @employeecount=COUNT(employee.dept_no) FROM employee WHERE dept_no=@sID;
GO 输入完成之后,单击 执行 按钮,即可完成带输出参数存储过程的创建操作.该段代码将创建一个 名称为 Proc_emp_04 的存储过程,该存储过程中有两个参数,@sID 为输出参数,指定要查询的员工部门编 号的 id,默认值为 1;