如何在查询中使用SQL变量 您所在的位置:网站首页 高斯数据库sql怎么使用变量 如何在查询中使用SQL变量

如何在查询中使用SQL变量

2024-07-03 01:12| 来源: 网络整理| 查看: 265

目录

简单查询——无SQL变量

在查询中添加SQL变量

创建存储过程

结论

学习如何在查询中使用SQL变量是朝着使您的查询更加灵活供您和其他人使用的正确方向迈出的一步。

当您可以参数化时,为什么要“硬编码”?

嗨,我是来自essentialSQL的Kris,今天我们将研究如何在查询中使用SQL变量,然后我将最终获取我们组合在一起的查询,然后将其转换为存储过程。所以让我们开始吧!

我在这里要做的是打开一个查询工具。我将使用Azure Data Studio,我将从人员表和adventure works数据库中进行非常简单的选择。

简单查询——无SQL变量

我们将从Person.Person表中选择LastName类似于Ral的所有人员:

结果如下:

select * from Person.Person Where LastName like 'Ral%'

在查询中添加SQL变量

我接下来要做的是声明一个变量来做同样的事情,但是使用一个变量。我将为LastNamePattern声明一个变量。我们将其设为varchar,长度设为20,然后将其设置为等于'Ral%',这就是我们刚刚为查询运行的内容。

好的,现在很酷的是,我可以使用这个变量,然后我可以将它直接放入我的查询中。正确的?

--Select with variable in Query declare @LastNamePattern as varchar(40); set @LastNamePattern = 'Ral%' select * from Person.Person Where LastName like @LastNamePattern

现在要发生的是,当我运行查询时,LastNamePattern将设置为' Ral%'。然后当我们运行查询时,它将在查询本身中使用该值。

所以让我们运行它。你可以得到它以Ral开头的LastNames。

如果我在这里将其更改为例如K并运行它,您会看到它返回以Kal开头的人名。现在我们的查询不需要改变,对吧?我可以更改变量并实现这一点。

您可能会问,“嗯,这很酷,我想您可以将它用于脚本。” 你可以喜欢这样,但更好的是,你可以创建一个存储过程,然后将参数传入并做同样的事情,然后将它变成一个存储过程。

创建存储过程

现在让我们基于我们的脚本创建一个存储过程。我将调用我的存储过程PersonSearchLastName,我们将作为参数引入我们的姓氏模式。

因为存储过程接受LastNameParameter我们不再需要将其声明为变量并设置其值。

提示:要获得很好的介绍,请阅读存储过程终极指南

到目前为止,我们使用标准模式声明存储过程。

现在我将添加我的查询,就在这里。它仍然在查询中使用sql变量,但现在它来自存储过程参数。

它已经引用了@LastNamePattern,所以没有太多需要改变的地方。

这是准备就绪的最终存储过程!

——将其设为存储过程并运行它!

create procedure PersonSearchLastName(@LastNamePattern as varchar(20)) AS begin select * from Person.Person Where LastName like @LastNamePattern end exec dbo.PersonSearchLastName 'Ral%'

让我运行这个命令在数据库中创建存储过程对象。

现在我可以使用以下命令执行它:

EXEC PersonSearchLastName 'Ral%'

这会传入姓氏模式。下图显示了它是如何工作的:

我们甚至可以做一些很酷的事情,比如搜索“%ert%”。让我们看看是否有人在他们的名字中间有类似ert。我们可以运行

EXEC PersonSearchLastName '%ert%'

你会在这里看到洛克特、罗伯茨等人的数据。所以ert在中间。我有一个模式。

希望您现在看到您可以使用这个存储过程,然后只需将许多不同类型的模式传递给它,即可找到名称。

结论

向查询中添加变量并不困难。如果您跟随我们的演进,您会看到我们如何处理一个简单的查询,测试其结果,然后逐步将其“更改”为存储过程中的查询:

本文最初发布于How to Use SQL Variables in Queries - Essential SQL

https://www.codeproject.com/Articles/5326829/How-to-Use-SQL-Variables-in-Queries



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有