【问题标题】:Passing multiple values to a parameter of a function in SQL将多个值传递给 SQL 中函数的参数
【发布时间】:2016-02-03 04:16:00
【问题描述】:
有函数Getfunctionname(userid, startdate, enddate)返回一个表
我的问题是我可以传递具有多个值的变量吗?
即
getfunctionname(@userid, startdate, enddate)
变量@userid的值在哪里
1
2
3
4
5
(实际上是使用split 函数将值从1,2,3,4,5 中分离出来)
如果可以的话请告诉我
【问题讨论】:
标签:
sql
sql-server
sql-server-2008
tsql
sql-server-2012
【解决方案1】:
使用CSV的概念
CREATE FUNCTION [dbo].[uspGetNumbers]
userid,startdate,enddate // define your paramters the way you want
AS
BEGIN
// your code
JOIN dbo.fnSplit(@UserIDs, ',')
END
GO
示例函数:
SELECT [dbo].[uspGetNumbers] '1,2,3,4,5', '', ''
【解决方案2】:
我喜欢的一种方法是创建一个新的用户定义表数据类型。
CREATE TYPE [dbo].[IdList] AS TABLE(
[Id] [int] NULL
)
然后您可以将该数据类型用作参数之一
CREATE FUNCTION Getfunctionname
(
@UserIDs dbo.IdList READONLY,
@startdate INT,
@endtdate INT
)
RETURNS @ReturnTable TABLE
(
-- ReturnTable
)
AS
BEGIN
-- Query
RETURN
END