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

MS sql如何使用存储过程

发布时间:2025-05-15 12:39:50    发布人:远客网络

MS sql如何使用存储过程

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

二、SQL Server的存储过程怎么写

create table books_test( book_id int identity(1,1) primary key,

book_name varchar(20),book_price float,book_auth varchar(10));

insert into books_test(book_name,book_price,book_auth)values

('论语',25.6,'孔子'),

('天龙八部',25.6,'金庸'),

('雪山飞狐',32.7,'金庸'),

('平凡的世界',35.8,'路遥'),

('史记',54.8,'司马迁');

if(exists(select* from sys.objects where name='getAllBooks'))

select book_name from books_test;

sp_rename getallbooks,proc_get_allbooks;

if(exists(select* from sys.objects where name='searchbooks'))

执行存储searchbooks得到如下结果:

create procedure searchbooks(@bookid int)--括号里面是

declare@book_id int;定义一个标量变量,只是保证存储过程的完整性,在本存储是多此一举的。

select* from books_test where book_id=@book_id;

执行存储searchbooks得到如下结果:

if(exists(select* from sys.objects where name='book_test2'))

执行存储book_test2得到如下结果:

(@bookid int,@bookname varchar(20))括号里面是

定义一个标量变量,只是保证存储过程的完整性,在本存储是多此一举的。

declare@book_name varchar(20);

select* from books_test where book_id=

@book_id and book_name=@book_name;

SQL Server中查询存储命令子句:

Use是跳转到哪个数据库,对这个数据库进行操作。

GO向 SQL Server实用工具发出一批 Transact-SQL语句结束的信号,相当于提交上面的SQL语句。

(一步成功了才会执行下一步,即一步一个GO)

/****** Object: StoredProcedure [dbo].[PROC_four_five_hr]

Script Date: 07/30/2018 13:44:55******/

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ON

三、sql server中怎样用代码创建存储过程

1、打开SQL server management studio,连接到数据库,展开想要创建的数据库,找到【可编程性】->【存储过程】的菜单

2、在第一步找到的【存储过程】菜单项上面,点击鼠标右键,依次选择【新建】->【存储过程】,就可以开始创建存储过程了

3、当点击了第二步的【存储过程】之后,在右侧就会出现一个新的窗口,而且默认有好多的代码和注释,这些就是sqlserver默认创建的存储过程的结构和注释

4、对于第三步看到的存储过程结构,因为是英文的,可能看着比较吃力。本文特意做了一个中文的翻译对照版本,同时增加了一下设置项的解释。

5、1)SET ANSI_NULLS ON:意思是空值NULL在匹配NULL条件的时候返回false,这种判断null就需要使用 is null或者 is not null

6、2)SET ANSI_NULLS OFF:意思是空值NULL在匹配NULL条件的时候返回true

7、3)SET QUOTED_IDENTIFIER ON:意思是如果内容与sqlserver的关键字相同,允许通过加双引号、单引号的方式加以区分

8、4)SET QUOTED_IDENTIFIER OFF:意思是与sqlserver的关键字相同的,不允许加双引号,也就是自定义的不允许与关键字重复

9、5)SET NOCOUNT ON:意思是不返回影响的行数

10、6)SET NOCOUNT OFF:意思是要返回影响的行数

11、此处仅仅创建一个简单的演示存储过程,名字叫做usp_SimpleStoreProcedure,拥有一个整型的传入参数@x,存储过程直接返回传入参数乘以10倍的结果。写完存储过程之后,按F5就可以将其存储到数据库中

12、在第二步中找到的【存储过程】菜单下面找到第5步创建的存储过程名字usp_SimpleStoreProcedure,在这个名字上面点击鼠标右键,选择【执行存储过程】

13、紧接着,会弹出一个【执行过程】的界面,里面有存储过程的参数,在【值】这一列输入想要传入的参数值,比如10,然后点击【确定】按钮,就可以看到执行结果100了。

14、注意:假设是使用sql语句执行存储过程,直接使用这样的语句就行了: EXEC [dbo].[usp_SimpleStoreProcedure]@x= 10