MSSQL中存储过程的可选参数的定义和使用
程序员文章站
2022-05-30 18:46:35
...
可选参数的存在,可以极大的降低代码的重复冗余。在数据库开发中,也是如此。现在针对MSSQL中存储过程的可选参数的定义和使用进行基本的介绍,留作备忘。 #准备工作: 在db_test中建立一张测试表T_test: USE db_test; CREATE TABLE dbo.T_test ( Id INT IDE
可选参数的存在,可以极大的降低代码的重复冗余。在数据库开发中,也是如此。现在针对MSSQL中存储过程的可选参数的定义和使用进行基本的介绍,留作备忘。
#准备工作:
在db_test中建立一张测试表T_test:
USE db_test;
CREATE TABLE dbo.T_test
(
Id 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
-------------------------------
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查询。
推荐阅读
-
Oracle中 关于数据库存储过程和存储函数的使用
-
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
-
MYSQL存储过程中事务和DECLARE EXIT/CONTINUE HANDLER的使用
-
Oracle中 关于数据库存储过程和存储函数的使用
-
Oracle中 关于数据库存储过程和存储函数的使用
-
Oracle中 关于数据库存储过程和存储函数的使用
-
使用SQL Mail收发和自动处理邮件中的扩展存储过程简介
-
Sql中存储过程的定义、修改和删除操作
-
数据库中的事务、存储过程和触发器的简单使用
-
Oracle中对一个表中的数据和输入的参数对比,做出对应的操作(存储过程)