2017-02-20 19 views
1

О, великие эксперты SQL, у меня есть следующий сценарий. Я должен делать то же выберите, несколько раз и только параметр (S) изменяется каждый раз, пример:Выполнение одного и того же SQL-запроса для заданных нескольких параметров

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

затем запустить следующее:

Select * from sales where Company_Name = @company1 

объявить новый В параметре

set @company1 = BB 

и запрограммируйте цикл, чтобы выполнить запрос.

Это может быть несколько компаний и, возможно, несколько параметров за каждый ход. Итак, все, что я хочу сделать, это указать запрос один раз и просто добавить объявление @companyX сверху.

Благодаря

+0

Как параметр заполняется разными значениями? Можете ли вы показать всю свою процедуру? –

ответ

0

Существует мало информации в вопросе о контексте того, как данные предоставляются для параметров или запроса, так вот несколько вариантов.

Создайте хранимую процедуру, и назвать его несколько раз:

-- 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')