procedure name: 要创建的过程名字。[:,mm中er是一个馨孩存储过程和触发器 用来区别同一组同名的存储过程。同一数据库中名字必须惟一。 @parameter:存储过程的参数,可以有一个或多个参数。当调存储 过程时用户必须给出所有的参数。若参数以@parameter=value 出现,参数的次序可以不同;其它参数也必须以该形式出现。 data_type:参数的数据类型。可以用所有的数据类型。当定义 cursor数据类型时,必须对VARYING、和OUTPUT关键字进行定义。 VARYING:指定由OUTPUT参数支持的结果集,仅用于游标型参数。 Default:指定默认值。 OUTPUT:表明该参数是一个返回参数。Text不能用于OUTPUT中. RECOMPILE:指明SQL Sever并不存储过程的执行计划。每执行一次, 就要重新编译。 ENCRYPTION:表明SQL Severi加密了syscomments?表,该表的text字段 是包含有create procedurei语句的存储过程文本。如果使用 encryption字段,查看syscomments表无法看到存储过程内容。 AS:指明该存储过程将要执行的动作。 sql_statement:包括任何数量和类型的包含在存储过程中的SQL语句。 2023/7/16 《SQLSever程序设计》 6
第7章 存储过程和触发器 2023/7/16 《SQL Sever 程序设计》 6 procedure_name:要创建的过程名字。[;number]是一个整数, 用来区别同一组同名的存储过程。同一数据库中名字必须惟一。 @parameter:存储过程的参数,可以有一个或多个参数。当调存储 过程时用户必须给出所有的参数。若参数以@ parameter=value 出现,参数的次序可以不同;其它参数也必须以该形式出现。 data_type:参数的数据类型。可以用所有的数据类型。当定义 cursor数据类型时,必须对VARYING、和OUTPUT关键字进行定义。 VARYING:指定由OUTPUT 参数支持的结果集,仅用于游标型参数。 Default:指定默认值。 OUTPUT:表明该参数是一个返回参数。Text不能用于OUTPUT中. RECOMPILE:指明SQL Sever并不存储过程的执行计划。每执行一次, 就要重新编译。 ENCRYPTION:表明SQL Sever加密了syscomments表,该表的text字段 是包含有create procedure语句的存储过程文本。如果使用 encryption字段,查看syscomments表无法看到存储过程内容。 AS:指明该存储过程将要执行的动作。 sql_statement:包括任何数量和类型的包含在存储过程中的SQL语句
第7章存储过程和触发器 例7.1:创建存储过程返回所有学生及其学分: Use XSCJ IF exists (select name from sysobjects Where name='student_infor'and type=p') Drop procedure student infor Go CREATE PROCEDURE student infor AS Select学号,姓名,总学分 From XSQK go 2023/7/16 《SQLSever程序设计》
第7章 存储过程和触发器 2023/7/16 《SQL Sever 程序设计》 7 例7.1:创建存储过程返回所有学生及其学分: Use XSCJ IF exists (select name from sysobjects Where name=‘student_infor’ and type=‘p’ ) Drop procedure student_infor Go CREATE PROCEDURE student_infor AS Select 学号,姓名 ,总学分 From XSQK go
第7章存储过程和触发器 例7.2:创建存储过程返回所有学生及其学分,并在该存储过程中使用参数: Use XSCJK IF exists (select name from sysobjects Where name='student_infor'and type='p') Drop procedure student_infor Go Use XSCJK CREATE PROCEDURE student infor @学号char(8) AS Select学号,姓名,总学分From XSQK Where学号=@学号 go 2023/7/16 《SQLSever程序设计》
第7章 存储过程和触发器 2023/7/16 《SQL Sever 程序设计》 8 例7.2:创建存储过程返回所有学生及其学分,并在该存储过程中使用参数: Use XSCJK IF exists (select name from sysobjects Where name=‘student_infor’ and type=‘p’ ) Drop procedure student_infor Go Use XSCJK CREATE PROCEDURE student_infor @学号 char(8) AS Select 学号,姓名 ,总学分 From XSQK Where 学号=@学号 go
第7章存储过程和触发器 7.1.3执行存储过程EXECUTE 语法规则如下: [EXECUTE] {[@return_status=] {procedure_name [number]@procedure_name_var} [[@parameter=](value|@variable[OUTPUT]|[DEFAULT][,...n]} [WITH RECOMPILE] } @return status,是可选一整型变量,用来存储存储过程向调用者返回 的值. @procedure_name_var是一变量名,用来代表存储过程的名字. 2023/7/16 《SQLSever程序设计》 9
第7章 存储过程和触发器 2023/7/16 《SQL Sever 程序设计》 9 7.1.3 执行存储过程 EXECUTE 语法规则如下: [EXECUTE] {[@return_status=] {procedure_name [;number]|@procedure_name_var} [[@parameter=]{value|@variable[OUTPUT]|[DEFAULT][,…n]} [WITH RECOMPILE] } • @return_status是可选一整型变量,用来存储存储过程向调用者返回 的值. • @procedure_name_var是一变量名,用来代表存储过程的名字