向sql函数传递多个参数
Posted
技术标签:
【中文标题】向sql函数传递多个参数【英文标题】:Pass multiple parameters to sql function 【发布时间】:2018-06-08 23:07:36 【问题描述】:我有如下数据的sql表
SnackID Name
1 Chicken
2 Soda
3 Chocolate
4 IceCream
我有下面的用户定义函数,它接受参数作为具有多个值的字符串,如“鸡”、“苏打”。
CREATE FUNCTION GetSnackCodes
(
@myValues varchar(max)
)
RETURNS @SnacksCodes TABLE
(
mySnackCoded int NULL
)
AS
BEGIN
insert into @SnacksCodes
select SnackID from Snack where Name In (@myValues)
return ;
END;
GO
当我尝试通过将多个值传递给此变量来调用此函数时,我没有得到预期的结果。 我猜它正在尝试将多个(逗号分隔)值作为单个值进行搜索。
关于如何传递此值的任何其他可能的解决方法?
【问题讨论】:
【参考方案1】:您的猜测是正确的 - 当您传递一个逗号分隔值的字符串时,SQL Server 将其视为单个字符串值。
改用table valued parameter:
CREATE TYPE SnackCode As Table (
Name NVARCHAR(50)
);
GO;
CREATE FUNCTION GetSnackCodes (
@myValues SnackCode
)
RETURNS @SnacksCodes TABLE (
mySnackCoded int NULL
)
AS
BEGIN
insert into @SnacksCodes
select SnackID
from Snack
where Name In (select Name from @myValues)
return ;
END;
GO
【讨论】:
【参考方案2】:您可以拆分逗号分隔值并将其存储在临时表中,然后将该表值结果传递给查询
【讨论】:
请添加示例以上是关于向sql函数传递多个参数的主要内容,如果未能解决你的问题,请参考以下文章
在 ASP.NET MVC 中向控制器传递多个参数;此外,在 LINQ-to-SQL 中生成动态查询