打开数据库,找到master库,如下图,在系统存储过程中有很多系统的
比如有一个 sys.sp_databases。我们新建查询下。
输入 exec sys.sp_databases(exec 执行)
查询结果里会显示出我数据库里所有的databases名
想要写存储过程,可以参考系统下的帮助文档。。
exec sys.sp_helptext sp_databases
执行结果下的text里有具体怎么写的。
第一行的create procedure sys.sp_databases 中sp_databases (如果自己创建一般是以usp_开始)
下面写一个简单点的创建存储过程
比如我在数据库(Huawei)下的 =》可编程性 =》存储过程 右键 》新建存储过程
会出现如下图:
这是一个模板,告诉你怎么写的。
修改从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
执行》》
查询结果一致。 结果一是存储过程里的 SELECT @num1+@num2 结果二是set @result=@num1-@num2