MS sql如何使用存储过程
发布时间:2025-05-15 12:39:50 发布人:远客网络
一、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