SQL 中存储过程怎么使用
发布时间:2025-05-14 20:16:59 发布人:远客网络
一、SQL 中存储过程怎么使用
drop procedure if exists GetUsers;
1、MySql支持 IN(传递给存储过程), OUT(从存储过程传出)和 INOUT(对存储过程传入和传出)类型的参数,存储过程的代码位于 BEGIN和 END语句内,它们是一系列 SQL语句,用来检索值,然后保存到相应的变量(通过指定INTO关键字);
2、下面的存储过程接受三个参数,分别用于获取用户表的最小,平均,最大分数,每个参数必须具有指定的类型,这里使用十进制值(decimal(8,2)),关键字 OUT指出相应的参数用来从存储过程传出
select min(score) into minScore from user;
select avg(score) into avgScore from user;
select max(score) into maxScore from user;
3、调用此存储过程,必须指定3个变量名(所有 MySql变量都必须以@开始),如下所示:
call GetScores(@minScore,@avgScore,@maxScore);12
4、该调用并没有任何输出,只是把调用的结果赋给了调用时传入的变量@minScore,@avgScore,@maxScore,然后即可调用显示该变量的值:
select@minScore,@avgScore,@maxScore;
5、使用 IN参数,输入一个用户 id,返回该用户的名字:
call GetNameByID(1,@userName);
二、使用SQL语句创建存储过程
CREATE PROC [ EDURE ] procedure_name [; number ]
[ VARYING ] [= default ] [ OUTPUT ]
{ RECOMPILE| ENCRYPTION| RECOMPILE, ENCRYPTION} ]
新存储过程的名称。过程名必须符合标识符规则,且对于数据库及其所有者必须唯一。有关更多信息,请参见使用标识符。
要创建局部临时过程,可以在 procedure_name前面加一个编号符(#procedure_name),要创建全局临时过程,可以在 procedure_name前面加两个编号符(##procedure_name)。完整的名称(包括#或##)不能超过 128个字符。指定过程所有者的名称是可选的。
是可选的整数,用来对同名的过程分组,以便用一条 DROP PROCEDURE语句即可将同组的过程一起除去。例如,名为 orders的应用程序使用的过程可以命名为 orderproc;1、orderproc;2等。DROP PROCEDURE orderproc语句将除去整个组。如果名称中包含定界标识符,则数字不应包含在标识符中,只应在 procedure_name前后使用适当的定界符。
过程中的参数。在 CREATE PROCEDURE语句中可以声明一个或多个参数。用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。存储过程最多可以有 2.100个参数。
使用@符号作为第一个字符来指定参数名称。参数名称必须符合标识符的规则。每个过程的参数仅用于该过程本身;相同的参数名称可以用在其它过程中。默认情况下,参数只能代替常量,而不能用于代替表名、列名或其它数据库对象的名称。有关更多信息,请参见 EXECUTE。
参数的数据类型。所有数据类型(包括 text、ntext和 image)均可以用作存储过程的参数。不过,cursor数据类型只能用于 OUTPUT参数。如果指定的数据类型为 cursor,也必须同时指定 VARYING和 OUTPUT关键字。有关 SQL Server提供的数据类型及其语法的更多信息,请参见数据类型。
三、SQL的存储过程是什么
1、存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。总的来说,存储过程具有以下一些优点:
2、◆存储过程能够实现较快的执行速度
3、◆存储过程可被作为一种安全机制来充分利用
4、CREATE PROC [ EDURE ] procedure_name [; number ]
5、[ VARYING ] [= default ] [ OUTPUT ]
6、{ RECOMPILE| ENCRYPTION| RECOMPILE, ENCRYPTION} ]