使用SQL语句创建存储过程
发布时间:2025-05-16 21:56:02 发布人:远客网络
一、使用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 中存储过程怎么使用
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);
三、MS sql如何使用存储过程
T-SQl和C语言一样,是一门结构化的语言。
存储过程是SQL查询语句与控制流程语句的预编译集合,并以特定的名称保存在数据库中。存储过程也是数据库对象
SQl server的系统存储过程保存在master数据库中,且所有命名的系统存储过程命名以“Sp_”开头。在master数据库中,
select count([name])as'系统存储数量' from sysobjects
where [name] like'sp_%'
EXECUTE用来表示调用存储过程,也可以缩写为EXEC,
EXECUTE‘存储过程名’‘参数’---如果没有参数则省略参数
EXEC sp_databases列出当前系统中的数据库
EXEC sp_renamedb'Northwind','Northwind1'修改数据库的名称(单用户访问)
USE stuDB GO EXEC sp_tables返回某个表列的信息
EXEC sp_columns查看指定列的信息
EXEC sp_help查看某个表的所有信息
EXEC sp_helpconstraint'表名'查看某个表的约束
EXEC sp_helpdb'数据库名'或 EXEC sp_helpdb查看指定数据库或所有数据库信息
EXEC sp_helptext'对象名称'显示数据库对象(存储过程、触发器、试图)的定义文本
EXEC sp_helpindex'表名'查看指定表的索引信息
EXEC sp_renamedb'原名称','新名称'更改数据库名称
EXEC sp_stored_procedures列出当前环境可用的所有存储过程
除了系统存储过程,SQL Server还提供以Xp_开头的扩展存储过程,如可以调用DOS命名的,XP_cmdshell存储过程
EXEC Xp_cmdshell DOS命名 [NO_OUTPUT]
NO_OUTPUT为可选参数,表示是否输入存储过程返回的信息
@参数1名数据类型 [=默认值] [参数类型(输入/输出)]
@参数n名数据类型 [=默认值] [参数类型(输入/输出)]
参数类型分为输入参数和输出参数,默认为输入参数,使用OUTPUT表示输出参数。创建存储过程最好以proc开头
if object_id('proc_student','procedure') is not null
select pcid as'电脑编号',
end as'使用状态' from pc
execute proc_student select* from pc
if object_id('proc_stu','procedure') is not null
select pcid as'电脑编号',
end as'使用状态' from pc where pcuse=@pcuse end;
if OBJECT_ID('proc_s','procedure') is not null
select@pcus=pcuse from pc where pcid=@pcid end;
declare@pcus int execute proc_s 5,@pcus output
当存储过程的语句十分复杂时,可以在存储过程中加入错误语言。SQL Server中可以使用RAISERROR返回用户自定义的错误信息。
RAISERROR(自定义的错误信息,错误的严重级别,错误状态)
自定义错误信息:表示输出信息:表示输出的错误提示文本
错误的严重级别:表示用户自定义错误的严重性级别。(0-18极)
错误的状态:表示自定义错误的状态,值的范围在1-127