存储过程的分类

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