2013-11-15 24 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

VariableINT类型的,但您的查询返回一个Table,您不能在表保存到INT类型你需要创建的表变量和返回表varible或代码以这样的方式查询的变量只返回一个单一的INT值。或者你可以简单地选择的结果,它会返回结果集,像这样的东西..在你的子查询

CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList] 
AS 
BEGIN 
    SELECT whsekey FROM timwarehouse 
    WHERE whseid IN ('001','010','011','012','013','014','015') 
END