2013-11-15 2 views
0

У меня есть следующий код в SQL-запросе, который я пытаюсь изменить, чтобы он выполнял все значения WhseID в определенном наборе, а не только один WhseID, установленный пользователь:Изменение запроса от целочисленного параметра к набору

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList] 
     @WhseID varchar(3), 
     @CompDate datetime 
    as 
    BEGIN 
    Declare @whseKey int 
    set @whseKey = (select whsekey from timwarehouse where whseid = @whseid) 

Я попытался изменения его:

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList_Catalog] 
     @CompDate datetime 
    as 
    BEGIN 
     Declare @whseKey int 

     set @whseKey = (select whsekey from timwarehouse 
         where whseid in ('001','010','011','012','013','014','015')) 

Но это дает мне ошибку о том, что подзапрос следующий знак равенства не может возвращать более одного значения. Как я могу сделать необходимые изменения?

Спасибо за помощь.

+0

в вашем подзапрос Телеприставки 1. Но это принесет вам топ 1, которая не может быть разыскиваемый один. –

+1

вам как-то придется использовать цикл, но трудно помочь вам с этим. –

+0

Вы можете установить ТОЛЬКО одно целое число в переменной. Ваш подзапрос возвращает более одного –

ответ

0

Ваш Variable имеет тип INT но ваш запрос возвращает Table, Вы не можете сохранить таблицу в переменную типа INT Ваша потребность создать таблицу переменной и возвращает эту таблицу varible или код таким образом, запрос возвращает только одно значение INT. или вы можете просто выбрать результаты, и она будет возвращать результат Set, что-то вроде этого ..

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList] 
AS 
BEGIN 
    SELECT whsekey FROM timwarehouse 
    WHERE whseid IN ('001','010','011','012','013','014','015') 
END 
Смежные вопросы