SQL存储过程如何传递多个参数

使用的数据库是Sybase

CREATE PROCEDURE getSomething @keyList varchar(4096)
AS
SELECT * FROM mytbl WHERE name IN (@keyList)

解决方案

将逗号分隔的列表传递到返回表值的函数中。

CREATE PROCEDURE getSomething @keyList varchar(4096)
AS
SELECT * FROM mytbl WHERE name IN (fn_GetKeyList(@keyList))

调用

exec getSomething 'John,Tom,Foo,Bar'

或者

将需要确保@keylist中的项目用引号引起来,即使它们是单个值也是如此。

CREATE PROCEDURE getSomething @keyList varchar(4096)
AS
declare @sql varchar(4096)
select @sql = "SELECT * FROM mytbl WHERE name IN (" + @keyList +")"
exec(@sql)

调用

exec getSomething 'John'        
exec getSomething 'John','Tom'   
日期:2020-03-25 09:36:38 来源:oir作者:oir