1、存储过程,课程目标,创建 CREATE PROCEDURE 更改 ALTER PROCEDURE 删除 DROP PROCEDURE 输入、输出参数、返回值的使用,存储过程的定义: 是一组预编译好的完成特定功能的SQL语句 是存储在服务器上的一个对象 可通过对象名来调用 优点: 提高性能 减轻网络阻塞 可进行模块化程序编写 保证系统的安全性,存储过程,用户定义的存储过程 系统存储过程(以sp_开头) 临时存储过程(以#开头) 远程存储过程 扩展存储过程(以xp_开头),存储过程的类型,创建格式:create procedure 过程名as beginsql 语句组end 执行格式:execut
2、e 过程名,存储过程的格式,使用 CREATE PROCEDURE 语句创建语法:CREATE PROCEDURE procedure_name,用户定义的存储过程,CREATE PROCEDURE Titles_1389 AS BEGIN PRINT 此代码显示出版商 1389 出版的标题 SELECT * FROM titles WHERE pub_id = 1389 END EXECUTE Titles_1389,注意事项,存储过程的名称必须遵守标识符的命名规则 存储过程中可以创建所有数据库对象,但默认值、 规则、触发器、过程和视图除外。创建对象后,就可以在过程内部进行引用。 存储过程可
3、以引用临时表。 在存储过程内调用的过程可以访问所有在调用过程中创建的对象 在存储过程中可使用2100个参数 只要内存空间足够,可以在存储过程中创建任意多个局部变量。 存储过程的最大大小为128 MB,存储过程的参数,参数类型: 输入参数:允许调用者向过程传递数据值 输出参数:允许存储过程向调用者返回值格式:create procedure 过程名 parameter 类型=缺省值 output,parameter 类型=缺省值 outputAs sql语句组,举例,参数默认值,通过为可选参数指定默认值,可创建带有可选参数的存储过程 如果在存储过程中没有指定参数的默认值,并且调用程序也没有在执行
4、存储过程时为该参数提供值,那么会返回系统错误,CREATE PROCEDURE get_sales_for_titletitle varchar(80) = NULL, - NULL default valueytd_sales int OUTPUT AS ,处理错误信息,返回代码: 存储过程的返回代码返回整数值 RAISERROR: RAISERROR语句记录错误并指定严重性级别,RAISERROR 语句,返回用户定义的错误信息,同时设置一个系统以记录已发生的错误 语法,RAISERROR (msg_id | msg_str, severity, state WITH option,.n ),举例,修改删除查看存储过程,修改 :alter procedure 过程名 as sql语句组 删除 :drop procedure 过程名 查看 :sp_helptext 过程名,两种方法: 使用系统存储过程 SP_RECOMPILE 使用 EXECUTE 时指定 WITH RECOMPILE,重新编译,