gpt4 book ai didi

sql - 标量函数的单个参数中的多个值

转载 作者:行者123 更新时间:2023-12-03 03:24:08 24 4
gpt4 key购买 nike

有没有办法在 SQL Server 2008 R2 标量值函数的单个参数中输入多个值,并让它使用这两个值按该参数过滤数据?

例如我想做以下事情

    SET @Salesperson='BILL' OR 'MOSES'

SELECT Sum(SalesDollars)
FROM Invoices
WHERE Invoices.Salesperson = @Salesperson

我尝试使用以下内容作为 WHERE 子句,但这也不起作用。

    SET @Salesperson='BILL','MOSES'

SELECT Sum(SalesDollars)
FROM Invoices
WHERE Invoices.Salesperson IN (@Salesperson)

如果我处理整数而不是 varchar 值会更容易吗?

任何帮助将不胜感激!

最佳答案

您需要使用表值参数。查找technetmsdn

最好的部分是您的表值参数可以有多个列。

但请注意,您必须将 TVP 参数定义为只读。因此,如果您想从函数返回类似的集合,您将需要在函数内创建另一个变量。

示例:

  CREATE TYPE Names AS TABLE 
( Name VARCHAR(50));
GO

/* Create a procedure to receive data for the table-valued parameter. */
CREATE PROCEDURE dbo.mySP
@n Names READONLY
AS
SELECT Sum(SalesDollars)
FROM
WHERE Invoices.Salesperson in (select Name from @n)
GO

CREATE FUNCTION dbo.myFun(@n Names READONLY) returns int
AS
SELECT Sum(SalesDollars)
FROM
WHERE Invoices.Salesperson in (select Name from @n)
GO

/* Declare a variable that references the type. */
DECLARE @names AS Names;

/* Add data to the table variable. */
INSERT INTO @names (Name)
VALUES ('BILL'),('MOSES')

-- using stored procedure with TVP
EXEC dbo.mySP @names

-- using function with TVP
select dbo.myFun(@names)
GO

关于sql - 标量函数的单个参数中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529845/

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