gpt4 book ai didi

sql-server-2008 - 如何将项目列表作为参数传递给存储过程

转载 作者:行者123 更新时间:2023-12-01 04:37:51 26 4
gpt4 key购买 nike

我有一个存储过程

create PROCEDURE [dbo].[SP] 
(
@OrderList varchar(500)
)
AS
Begin
select *
from table
where id in ('+ @OrderList +')

我在这里传递订单列表....

当我这样执行时

exec sp 'iss005,iss006'

我没有得到数据

但是当我像这样在 sp 中硬编码时...

   select * from table where id in ('iss005','iss006')

然后我正在获取数据...

谢谢

最佳答案

不幸的是,它不会那样工作。如果您将程序更改为以下内容,这将起作用:

Create Procedure dbo.SP
@OrderList varchar(500)
AS

Declare @SQL VarChar(1000)

Select @SQL = 'SELECT * FROM table '
Select @SQL = @SQL + 'WHERE id in (' + @OrderList +')'

Exec ( @SQL)

GO

仔细查看您的查询,您的 ID 值 varchar,因此该过程将失败,因为您仍然会得到:

WHERE id in (iss005,iss006)

当你想要的时候:

WHERE id in ('iss005','iss006')

您需要传入引号值,例如:

@OrderList = 'iss005','iss006'

或者制定一些 SQL 以逗号分隔 @OrderList 并使用 QUOTENAME() 函数将引号添加到新变量。

关于sql-server-2008 - 如何将项目列表作为参数传递给存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13948314/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com