SQL Server基于输入和输出参数对存储过程进行分类

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 存储过程参数类型

存储过程参数概念中有两种类型的参数。它们分别是:

  1. 带有参数
  2. 不带参数

带有参数的概念又分为两种类型。它们分别是:

  1. 动态参数或输入参数
  2. 静态参数或输出参数

首先,让我们了解一下在没有参数的情况下执行的 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存储过程分为两种类型。它们是:

  1. 动态参数或输入参数
  2. 静态参数或输出参数

使用输入参数执行的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根据输入和输出参数对存储过程进行分类的所有内容

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程