打开数据库,找到master库,如下图,在系统存储过程中有很多系统的

sql server 存储过程 异常处理 sql server存储过程在哪里_帮助文档


比如有一个 sys.sp_databases。我们新建查询下。
输入 exec  sys.sp_databases(exec 执行)


sql server 存储过程 异常处理 sql server存储过程在哪里_存储过程_02

查询结果里会显示出我数据库里所有的databases名


想要写存储过程,可以参考系统下的帮助文档。。
exec sys.sp_helptext  sp_databases
执行结果下的text里有具体怎么写的。

sql server 存储过程 异常处理 sql server存储过程在哪里_帮助文档_03


第一行的create procedure sys.sp_databases 中sp_databases  (如果自己创建一般是以usp_开始)


下面写一个简单点的创建存储过程

比如我在数据库(Huawei)下的 =》可编程性  =》存储过程 右键 》新建存储过程

会出现如下图:

sql server 存储过程 异常处理 sql server存储过程在哪里_帮助文档_04

这是一个模板,告诉你怎么写的。

修改从21行开始 :

CREATE PROCEDURE是创建过程 后面加上存储过程名

下面的@Param1,@Param2等,是添加参数。 AS BEGIN后面是具体执行的操作。

代码如下:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE usp_wmh
-- Add the parameters for the stored procedure here
@num1 int,
@num2 int,
@result int output     --output类似于C#中传参时的ref、out中的out
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;(当 SET NOCOUNT 为 ON 时,不返回计数
--当 SET NOCOUNT 为 OFF 时,返回计数。)


    -- Insert statements for procedure here
SELECT @num1+@num2
set @result=@num1-@num2
END
GO

执行,刷新    可以看到左边生成了一个名为usp_wmh的存储过程。。

--调用① 直接传参
 declare @s int
 exec usp_wmh 10,2,@s output
 select @s
执行》》

--调用② 间接传参
declare @n1 int,@n2 int,@s int
set @n1=10
set @n2=2
exec usp_wmh @num1=@n1,@num2=@n2,@result=@s output
select @s执行》》

sql server 存储过程 异常处理 sql server存储过程在哪里_存储过程_05


查询结果一致。 结果一是存储过程里的  SELECT @num1+@num2    结果二是set @result=@num1-@num2