sql 函数中的函数参数 return 值
sql function parameter in function return value
sql 查看我如何 return 函数中的 return 值进入函数
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) SELECT
直接在您的查询中(必须确保参数 table 只包含一行,否则该函数将针对每个产品多次应用,按参数行) .您可以使用 WHERE
或 INNER JOIN
中的条件过滤行(而不是我作为示例编写的 CROSS JOIN
)。
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
sql 查看我如何 return 函数中的 return 值进入函数
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) SELECT
直接在您的查询中(必须确保参数 table 只包含一行,否则该函数将针对每个产品多次应用,按参数行) .您可以使用 WHERE
或 INNER JOIN
中的条件过滤行(而不是我作为示例编写的 CROSS JOIN
)。
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