【发布时间】:2021-08-21 12:58:56
【问题描述】:
我刚开始学习 PL/SQL。我的问题是可以在函数中创建视图吗?
CREATE OR REPLACE FUNCTION most_sold_item(in_year INT)
RETURN INT
IS
most_shipped_item INT := 0;
BEGIN
CREATE OR REPLACE VIEW Shipped_Items AS
SELECT ITEM_ID,SUM(QUANTITY) AS Total_Quantity
FROM ORDERS, ORDER_ITEMS
WHERE Orders.Order_ID =Order_Items.Order_ID
AND Status=1
AND Order_Year=in_year
GROUP BY Item_ID;
SELECT Item_ID
INTO most_shipped_item
FROM Shipped_Items
WHERE Total_quantity=(
SELECT MAX(Total_Quantity)
FROM Shipped_Items);
return most_shipped_item;
END;
/
这是我的代码。似乎有某种我找不到的错误。谁能帮我解决这个问题? 谢谢。
【问题讨论】:
-
否;使用
CTE。 -
另外,你有一个逻辑问题,即使可以做到。如果
MAX匹配多个Item_IDs,您将产生多个结果并产生错误。你也不需要VIEW。这可以在没有VIEW的语句中完成,只要您包含打破任何联系的逻辑即可。