存储过程的分类
1、系统存储过程:
用来管理SQL SERVER和显示有关数据库和用户信息的存储过程sp_开头,存放在master数据库 中。
2、扩展存储过程:
使用其他编程语言创建外部存储过程,并将这个存储过程在SQL SERVER中作为存储过程来使用。 xp_开头。
3、自定义存储过程:
用户在SQL SERVER中通过采用SQL语句创建存储过程,通常以usp_开头
存储过程的调用:
EXECUTE 过程名 [参数]
或
EXEC 过程名 [参数]
常用的系统存储过程
use master
go
execute sp_databases -- 列出当前系统中的数据库
exec sp_renamedb @dbname='asp_net',@newname='asp_net_new' --修改数据库名称,可带参数名称
exec sp_renamedb 'asp_net','asp_net_new' --修改数据库名称,不带参数名称
exe sp_help 表名 --查询表的所有信息
常用的扩展存储过程 xp_cmdshell 创建文件夹
use master
go
execute sp_configure 'show advanced option',1 --启用xp_cmdshell的高级配置
go
reconfigure --重新配置
go
exec sp_configure 'xp_cmdshell',1 --打开xp_cmdshell,可以调用SQL之外的系统命令
go
reconfigure --重新配置
go
--使用xp_cmdshell在D盘创建myFile文件夹
exec xp_cmdshell 'mkdir d:\myFile',no_output --[no_output]是否输出返回信息,不输出
扩展存储过程可能会在以后的版本中废除!!!慎重考虑是否使用
4、创建不带参数的存储过程
语法
create proc[EDURE] 存储过程名
AS
SQL语句
GO --必须要加批处理的GO
--创建不带参数的存储过程
USE asp_net
go
--存储过程实现目标
/*
查看XX购买的商品信息,包括用户名,付款方法,购买数量,商品名称,商品类别
*/
--检查是否存在要创建的存储过程,如果存在将其删除
IF EXISTS(SELECT * FROM sysobjects where name='usp_GetCommodityInfo')
DROP PROC usp_GetCommodityInfo --存在则删除存储过程
GO --删除之后要加GO,因为CREATE PROC 必须是批处理中仅有的语句
CREATE PROC usp_GetCommodityInfo --必须是批出历的第一句
AS
select O.UserId as 用户号,PayWay AS 付款方式,O.Amount AS 购买数量,C.CommodityName AS 商品名称, S.SortName AS 类别名称 from OrderInfo AS O
INNER JOIN CommodityInfo AS C ON O.CommodityId=C.CommodityID
INNER JOIN CommoditySort AS S ON C.SortID=S.SortID
WHERE O.UserId='bjxingch'
GO --存储过程结束
--如何使用不带参数的存储过程
exec usp_GetCommodityInfo
GO