Heim  >  Artikel  >  Datenbank  >  数据库系列之T

数据库系列之T

WBOY
WBOYOriginal
2016-06-07 15:00:061530Durchsuche

什么是存储过程 存储过程是保存在数据库的函数,可以被应用程序或其它存储过程调用。 存储过程有什么用 用于实现业务逻辑(特别是需要事务的业务)。 1 优点 减少网络通信量 执行速度更快 更强的适应性(有时候发布系统无需更新客户端) 分布式工作 减少客户

什么是存储过程


存储过程是保存在数据库的函数,可以被应用程序或其它存储过程调用。

存储过程有什么用


用于实现业务逻辑(特别是需要事务的业务)。
1 优点
减少网络通信量
执行速度更快
更强的适应性(有时候发布系统无需更新客户端)
分布式工作
减少客户端的负荷
2 缺点
增加服务器的负荷

 

常用的系统存储过程

系统存储过程    说明
sp_help    用于查看对象信息
sp_helpdb    用于查询数据库的信息
sp_helpconstraint    查看某个表的约束
sp_helpindex    查看某个表的索引
sp_databases    用于显示所有数据库的信息,如数据库名和数据大小。
sp_renamedb    更改数据库的名称
Sp_rename    用于在当前数据库更改用户创建的对象名称,如数据表、字段、索引等
sp_tables    返回当前数据库中数据表和视图
sp_columns    返回某个数据表或视图的列信息
sp_password    添加或修改登录帐户的密码

调用系统存储过程

exec sp_databases  --列出当前系统中的所有数据库
use booksmanager
go
exec sp_tables  --列出数据库booksmanager中所有数据表和视图
exec sp_columns books --列出图书表的列信息
exec sp_help books --查看图书表的所有信息
exec sp_helpconstraint books --查看图书表的约束
exec sp_helpindex books --查看图书表的索引

扩展存储过程

扩展存储过程(Extended  stored  procedured)是对动态链接库(DLL)函数的调用。
扩展存储过程通常是以“XP_”为前缀。

用户自定义存储过程

1 不带参数的存储过程

(1)语法
CREATE  PROCEDURE  存储过程名
AS
  ………
  ………
  ………
建议:自定义存储过程的名称最好以USP_开头
(2)调用带输入参数的存储过程
EXEC  存储过程名

2 带参数的存储过程

(1)语法
CREATE  PROCEDURE  存储过程名
    @参数1  数据类型 [=默认值],
     ……
    @参数n  数据类型 [=默认值]
AS
  ………
  ………
  ………
(2)调用带输入参数的存储过程
方式一:
exec usp_score_byparam 'SQL Server基础编程',70
方式二:
exec usp_score_byparam @coursename='SQL Server基础编程' ,@pass=70

3 带输出参数的存储过程

(1)语法
CREATE  PROCEDURE  存储过程名
    @参数1  数据类型 [=默认值],
     ……
    @参数n  数据类型 OUTPUT
AS
  ………
  ………
  ………
(2)调用带输出参数的存储过程
declare @result  int
exec usp_ADD 20,30,@result output
print '运算结果:'+str(@result,5)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn