函数返回值中的sql函数参数
如何将返回值从函数返回到函数中的sql视图函数返回值中的sql函数参数,sql,sql-server,sql-server-2008,tsql,sql-function,Sql,Sql Server,Sql Server 2008,Tsql,Sql Function,如何将返回值从函数返回到函数中的sql视图 select dbo.fn_CalculatePrice ( p.Price, p.CargoPrice, p.Factor, p.PointRatio, null, p.OperactivePromoCode, SELECT IncludingCargoPrice FROM [dbo].[fn_Parameter](), SELECT IncludingProductKdv FROM [dbo].[fn_Parameter]()) AS
select
dbo.fn_CalculatePrice
(
p.Price,
p.CargoPrice,
p.Factor,
p.PointRatio,
null,
p.OperactivePromoCode,
SELECT IncludingCargoPrice FROM [dbo].[fn_Parameter](),
SELECT IncludingProductKdv FROM [dbo].[fn_Parameter]()) AS Price
From Product as p
[dbo].[fn_CalculatePrice] func parameters
(
@Price money,
@CargoPrice money,
@CatFactor decimal(8,4),
@PointRatio decimal(8,4),
@HBFactor decimal(8,4),
@PromoCode nvarchar(50),
@includingCargoPrice bit,
@includingProductKdv bit
)
fn_Parameter func return table
{
IncludingCargoPrice bit,
IncludingProductKdv bit,
}
错误:关键字“SELECT”附近的语法不正确。您可以使用以下两种方法中的任何一种: 1) 将每个参数确定为标量变量
DECLARE @IncludingCargoPrice BIT = (SELECT IncludingCargoPrice FROM [dbo].fn_Parameter())
DECLARE @IncludingProductKdv BIT = (SELECT IncludingProductKdv FROM [dbo].fn_Parameter())
SELECT
dbo.fn_CalculatePrice(
p.Price,
p.CargoPrice,
p.Factor,
p.PointRatio,
null,
p.OperactivePromoCode,
@IncludingCargoPrice,
@IncludingProductKdv) AS Price
From
Product as p
2) 直接在查询中选择它们(必须确保参数表仅包含一行,否则该函数将按参数行对每个产品应用多次)。您可以使用WHERE
或内部联接
中的条件过滤行(而不是我作为示例编写的交叉联接
)
首先,将SELECT
语句作为函数的参数是。。。(怎么说是…?)不是推荐的做法。其次,产品中的作为p
显然是错误的。第三,参数列表中的选择不保证返回单个值。最后,编辑您的问题并使其可读。请注意,标量值函数执行RBAR(逐行)
SELECT
dbo.fn_CalculatePrice(
p.Price,
p.CargoPrice,
p.Factor,
p.PointRatio,
null,
p.OperactivePromoCode,
X.IncludingCargoPrice,
X.IncludingProductKdv) AS Price
From
Product as p
CROSS JOIN [dbo].fn_Parameter() AS X