您当前的位置:首页 > 互联网教程

使用SQL语句创建存储过程

发布时间:2025-05-16 21:56:02    发布人:远客网络

使用SQL语句创建存储过程

一、使用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