【问题标题】:Executing the same SQL select for multiple parameters specified对指定的多个参数执行相同的 SQL 选择
【发布时间】:2017-02-20 15:40:44
【问题描述】:

哦,伟大的 SQL 专家,我有以下情况。我必须多次执行相同的选择,每次只有一个参数(S)更改,示例:

DECLARE @company1 varchar(25)
set @company1 = AA

然后运行以下命令:

Select * from sales where Company_Name = @company1

声明一个新的参数

 set @company1 = BB

然后循环返回以运行查询。

这可能适用于几家公司,并且每次运行可能有几个参数。 所以我要做的就是指定一次查询,然后在顶部添加@companyX 声明。

谢谢

【问题讨论】:

  • 如何用不同的值填充参数?你能展示你的整个过程吗?

标签: sql-server sql-server-2008 stored-procedures


【解决方案1】:

关于如何将数据提供给参数或查询的上下文信息很少,所以这里有一些选项。

创建一个存储过程,并多次调用:

-- Stored procedure
create procedure dbo.GetSalesByCompany
@companyName varchar(25)

AS

SET NOCOUNT ON;
Select * from sales where Company_Name = @company1;

--Usage
exec dbo.GetSalesByCompany 'AA';
exec dbo.GetSalesByCompany 'BB';

-- Usage with params
DECLARE @company1 varchar(25)
set @company1 = 'AA';
exec dbo.GetSalesByCompany @company1;
set @company1 = 'BB';
exec dbo.GetSalesByCompany @company1;

创建一个用户定义的表值函数。如果需要,可以从存储过程中调用它:

-- User defined table-valued function
Create Function dbo.udf_GetSalesByCompany
(@companyName varchar(25) )

RETURNS TABLE AS
RETURN Select * from sales where Company_Name = @company1;

--Usage
SELECT * FROM dbo.udf_GetSalesByCompany('AA');
SELECT * FROM dbo.udf_GetSalesByCompany('BB');

-- Usage with params
DECLARE @company1 varchar(25)
set @company1 = 'AA';
SELECT * FROM dbo.udf_GetSalesByCompany(@company1);
set @company1 = 'BB';
SELECT * FROM dbo.udf_GetSalesByCompany(@company1);

或者您使用“IN”语句来调用一次查询,用于多个过滤器值,在本例中为公司名称。

--Use and "IN" statement
Select * from sales where Company_Name IN('AA', 'BB')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2013-03-28
    • 1970-01-01
    相关资源
    最近更新 更多