我是新手,所以如果我没有遵循论坛协议,我会提前道歉!
我正在尝试在T-SQL中创建一个函数,它根据两个参数计算产品价格的GST; ProductID
和GST_Percentage
ProductID
(这是10%)。
如果您检查我当前输出结果附带的图像,您将看到我的问题。我希望返回一条记录,因为我只输入了一个ProductID
作为输入参数BUT而是返回表中的所有记录,并且输入的CREATE FUNCTION fn_CalculateGST
(@ProductID INT,
@GST_Percentage FLOAT)
RETURNS MONEY
AS
BEGIN
DECLARE @Price MONEY
SET @Price = (SELECT Price
FROM Products
WHERE ProductID = @ProductID)
RETURN @Price * @GST_Percentage
END
GO
的预期计算GST是正确的但是它还会显示所有不需要的记录。
我已经尝试了几个小时来弄清楚我做错了什么,但似乎无法弄明白。请帮忙
SELECT
下面是我用来测试函数的SELECT
ProductID, ProductDescription,
Price, dbo.fn_CalculateGST(1, 0.10) AS GST
FROM
Products
语句。
self.nodes(at: pointOfTouch)
输出结果:
答案 0 :(得分:2)
嗯,您总是将1
作为您的第一个参数(@ProductID
)传递到SELECT
语句中的函数中 - 所以它会总是计算15.00的10% - 这是1.50 - 所以输出 IS 正确!
但你可能想要这样的东西:
SELECT
ProductID, ProductDescription,
Price, dbo.fn_CalculateGST(ProductID, 0.10) AS GST
-- ********* pass in ProductID - not always 1 !!!!
FROM
Products
请参阅:您需要将ProductID
列值传入您的函数 - 并不总是1 .....