当前位置:Gxlcms > 数据库问题 > MSSQL中存储过程的可选参数的定义和使用

MSSQL中存储过程的可选参数的定义和使用

时间:2021-07-01 10:21:17 帮助过:2人阅读

INT  IDENTITY(1,1) NOT NULL
,Name  NVARCHAR(20)  NOT NULL
,Sex  BIT  DEFAULT(0)
);




插入一些数据:

INSERT INTO dbo.T_test(Name,Sex)
VALUES(N'NAME1','1')
,(N'NAME2','0')
,(N'NAME3','1')
,(N'NAME4','0');


查询测试数据:

SELECT Id,Name,Sex
FROM dbo.T_test;
结果为:

Id Name   Sex

-------------------------------

1 NAME1 1
2 NAME2 0
3 NAME3 1
4 NAME4 0


#存储过程

创建一个存储过程:

IF OBJECT_ID('dbo.up_test_get_name_by_id','P') IS NOT NULL
DROP PROC dbo.up_test_get_name_by_id;
GO

CREATE PROC dbo.up_test_get_name_by_id
@Name AS NVARCHAR(20) OUT
,@Id AS INT = 1  --DEFAULT VALUE: 1
,@Sex AS BIT = 1 --DEFAULT VALUE: 1
AS
BEGIN 
SELECT @Name = Name
FROM dbo.T_test
WHERE  Id = @Id
  AND Sex = @Sex;

END
GO


对存储过程进行调用:

1)不传递ID和Sex

DECLARE @Name NVARCHAR(20);
EXEC dbo.up_test_get_name_by_id @Name OUT;

SELECT @Name AS NAME;
结果为:

NAME

-------------

NAME1


说明:

可见,当调用存储过程的时候不传递ID,则存储过程会使用(存储过程)定义时设定的ID的默认值1,Sex默认值为1 。


2)传递ID

DECLARE @Name NVARCHAR(20);
EXEC up_test_get_name_by_id @Name OUT,'3';

SELECT @Name AS NAME;
结果为:

NAME

-------------

NAME3


说明:

当调用时传递ID,则存储过程在执行的时候会使用从外部传递进来的ID值,因为没有传递进来Sex的值,故使用Sex默认值1进行SQL查询。



MSSQL中存储过程的可选参数的定义和使用

标签:

人气教程排行