Sql 将查询从整数参数更改为集合
我正在尝试更改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
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.
并使用其他东西作为前缀,或者根本不使用前缀!