Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将查询从整数参数更改为集合_Sql_Parameters_Dataset - Fatal编程技术网

Sql 将查询从整数参数更改为集合

Sql 将查询从整数参数更改为集合,sql,parameters,dataset,Sql,Parameters,Dataset,我正在尝试更改SQL查询中的以下代码,以便它将针对特定集合中的所有WhseID值运行,而不仅仅是用户设置的单个WhseID: CREATE PROCEDURE [dbo].[sp_c_IMPriceChangeList] @WhseID varchar(3), @CompDate datetime as BEGIN Declare @whseKey int set @whseKey = (select whsekey fro

我正在尝试更改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'))
但这给了我一个错误,即等号后面的子查询不能返回多个值。我怎样才能做出必要的改变


谢谢您的帮助。

您的
变量
类型为
INT
,但是您的查询返回的是
,您无法将表保存到
INT
类型的变量中。您需要创建一个表变量,并以这种方式返回该表变量或代码。查询只返回一个INT值。或者,您可以简单地选择结果,它将返回结果集,类似这样的内容

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

在子查询中,设置top 1。但这将为您带来前1,它可能不是您想要的。您将不得不使用循环,但很难帮助您实现这一点。您只能在变量中设置一个整数。您的子查询返回多个值如果这是针对SQL Server的,请注意:您不应在存储过程中使用
sp\uu
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!