SQL Server基于输入和输出参数对存储过程进行分类
介绍
今天,我们要学习关于SQL(结构化查询语言)Server或者也被广泛称为Microsoft SQL Server的另一个主题。这个主题是关于SQL Server中的存储过程。本主题详细深入地解释了在SQL Server中使用的输入和输出参数。没有这些参数,存储函数或者也被称为存储过程的概念将无法在SQL Server中运行或使用。
存储过程
存储过程用于减少SQL Server中的冗余概念。在某些情况下,相同的代码会因为输出结果的不同而被重复编写。因此,在这种情况下我们使用存储过程。在Oracle SQL Server中,存储过程被称为函数。这给SQL开发人员带来了很多便利。
存储过程的概念类似于其他编程语言中使用的函数或方法。您在程序或任何其他程序中创建它们。然后,当需要时我们会调用它们并使用它们的资源。我们可以无限次调用它们。
存储过程的语法在SQL Server中如下:
CREATE PROCEDURE Procedure Name (Parameters if available)
AS
BEGIN
SQL Query based on our Requirement
GO
示例 1(无参数)
1> CREATE PROCEDURE PLAYERDEETS
2> AS
3> BEGIN
4> select * from ipla where sid > 2
5> END
6> GO
Executable Statement
1> EXEC PLAYERDEETS
2> GO
Example 2(带参数)
1> CREATE PROCEDURE PLAYERDEETS
2> (@ID int, @NAME varchar(10), @AGE int, @SAL float)
3> AS
4> BEGIN
5> SELECT @ID, @NAME, @AGE, @SAL AS Result
6> END
7> GO
Executable Statement
1> EXEC PLAYERDEETS 1, 'miller', 33, 8.6
2> GO
SQL Server 存储过程参数类型
存储过程参数概念中有两种类型的参数。它们分别是:
- 带有参数
- 不带参数
带有参数的概念又分为两种类型。它们分别是:
- 动态参数或输入参数
- 静态参数或输出参数
首先,让我们了解一下在没有参数的情况下执行的 SQL Server 存储过程。
在没有参数的情况下执行的 SQL Server 存储过程
在 SQL Server 中创建的没有任何参数的存储过程被称为没有任何参数的 SQL Server 存储过程。
语法
CREATE PROCEDURE Procedure name
AS
Radom SQL Query
GO
EXEC Procedure name;
GO
示例 1
1> CREATE PROCEDURE PLAYERDEETS
2> AS
3> BEGIN
4> select * from ipla
5> END
6> GO
Executable Statement
1> EXEC PLAYERDEETS
2> GO
输出
ID NAME SAL COMMISION_PERCENTAGE MONTHLY_SALARY
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 Joe Root 75000 0.15 86250
2 Ros Taylor 90000 0.1 99000
3 Paul Adams 50000 0.01 50500
4 Victor Lee 43000 0 43000
5 Matt Potts 20000 0 20000
6 James Anderson 200000 0.33 266000
7 Craig Overton 11000 0 11000
8 Rory Burns 9000 0 9000
(8 rows affected)
示例2
1> CREATE PROCEDURE PLAYERDEETS1
2> AS
3> BEGIN
4> select * from iplb
5> END
6> GO
Executable Statement
1> EXEC PLAYERDEETS1
2> GO
输出
SID SNAME SAL AGE
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 mahi 12 40
2 kohli 14 33
3 DK 6.25 33
4 warner 6.75 33
5 rahul 16 29
6 pandya 14 27
(6 rows affected)
SQL Server存储过程,带参数执行
在SQL Server中创建的带有任何参数的存储过程被称为带有任何参数的SQL Server存储过程。所使用的参数数量取决于我们的需求。
语法
CREATE PROCEDURE Procedure name (@Parameter name Data type (Size if required)
AS
Radom SQL Query
GO
EXEC Procedure name If any input required;
GO
例子
1> CREATE PROCEDURE PLAYERDEETS
2> (@ID int, @NAME varchar(10), @AGE int, @SAL float)
3> AS
4> BEGIN
5> SELECT @ID, @NAME, @AGE, @SAL AS Result
6> END
7> GO
Executable Statement
1> EXEC PLAYERDEETS 1, 'miller', 33, 8.6
2> GO
输出
Result
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 miller 33 8.5999999999999996
我们都知道执行带参数类型的SQL Server存储过程分为两种类型。它们是:
- 动态参数或输入参数
- 静态参数或输出参数
使用输入参数执行的SQL Server存储过程
在SQL Server中创建的带任何参数的存储过程称为带任何参数的SQL Server存储过程。使用的参数数量取决于我们的兴趣。
如果在给定的EXEC语句中给出参数,则传递的参数称为SQL Server存储过程的输入参数。
这些条件将以上带有参数的SQL Server存储过程转变为使用输入参数执行的SQL Server存储过程。
输入参数语法
CREATE PROCEDURE Procedure name (@Parameter name Data type (Size if required)
AS
Radom SQL Query
GO
EXEC Procedure name If any input required;
GO
示例
1> CREATE PROCEDURE EMPRole (@Role varchar(30))
2> AS
3> SELECT * FROM empdeets WHERE @Role =Role
4> GO
Executable Statement
1> EXEC PLAYERDEETS "TECHIE"
2> GO
招聘信息表
ID NAME SAL TOTAL_SALARY ROLE
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 Joe Root 75000 75000 TECHIE
2 Ros Taylor 90000 90000 TECHIE
3 Paul Adams 50000 50000 Manager
4 Victor Lee 43000 43000 TECHIE
5 Matt Potts 20000 20000 TECHIE
6 James Anderson 200000 200000 TECHIE
7 Craig Overton 11000 11000 MAINTAIN
8 Rory Burns 9000 9000 SUPPLY
输出
ID NAME SAL TOTAL_SALARY ROLE
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 Joe Root 75000 75000 TECHIE
2 Ros Taylor 90000 90000 TECHIE
4 Victor Lee 43000 43000 TECHIE
5 Matt Potts 20000 20000 TECHIE
6 James Anderson 200000 200000 TECHIE
SQL Server执行带输出参数的存储过程
在SQL Server中创建的带任何参数的存储过程被称为带任何参数的SQL Server存储过程。 使用的参数数量取决于我们的兴趣。
在过程中提到的参数由out语句表示,那么该参数就变成了带输出参数的SQL Server存储过程。
如果参数在给定的EXEC语句中给出,则传递的参数被称为SQL Server存储过程的输出参数。
这些条件将上述带参数的SQL Server存储过程转换为执行带输出参数的SQL Server存储过程
输出参数语法
CREATE PROCEDURE Procedure name (@Parameter name Data type (Size if required) out)
AS
Radom SQL Query
GO
EXEC Procedure name If any input required;
GO
例子
Empdeets 表格
ID NAME SAL TOTAL_SALARY BIRTH_YEAR
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
1 Joe Root 75000 75000 1990
2 Ros Taylor 90000 90000 1990
3 Paul Adams 50000 50000 1990
4 Victor Lee 43000 430000 1990
5 Matt Potts 20000 20000 1990
6 James Anderson 200000 200000 1990
7 Craig Overton 11000 11000 1999
8 Rory Burns 9000 9000 1997
1> DECLARE @countNum INT;
2>
3> EXEC uspFindCount
4> @birth_year = 1990,
5> @head_count = @count OUTPUT;
Executable Statement
1> SELECT @count AS 'Employees born on ';
2> END
3> GO
输出
Employees born on
_ _ _ _ _ _ _ _ _ _ _
6
SQL Server执行带有输入和输出参数的存储过程
在SQL Server中创建带有任何参数的存储过程被称为具有任何参数的SQL Server存储过程。使用的参数数量取决于我们的需求。
在Procedure中提到的参数用out语句表示,然后该参数变成具有输出参数的SQL Server存储过程。
如果参数在给定的EXEC语句中给出,则传递的参数被称为SQL Server存储过程的输出参数。
这些任何条件都使得上述带参数的SQL Server存储过程成为使用输出或输入参数执行的SQL Server存储过程。
如果同时提到输入和输出类型的参数,则将SQL Server存储过程变为同时使用输入和输出参数执行的SQL Server存储过程。
输出参数语法
CREATE PROCEDURE Procedure name
(@Parameter1 name Data type (Size if required) out
@Parameter2 name Data type (Size if Required))
AS
Radom SQL Query
GO
EXEC Procedure name If any input required;
GO
这是关于SQL Server根据输入和输出参数对存储过程进行分类的所有内容