[英]SQL Procedure error
更改为过程,在“ PROCEDURE”处出现语法错误有什么想法?
CREATE PROCEDURE performance_Report
@startDate DATE,
@endDate DATE
AS
SELECT Salesrep.Name, SUM(OrderLine.Quantity) AS Total_Sold, SUM(OrderLine.UnitSellingPrice * Orderline.Quantity) AS Total_Value
FROM SalesRep, OrderLine, ShopOrder
WHERE ShopOrder.SalesRepID = SalesRep.SalesRepID
AND OrderLine.ShopOrderID = ShopOrder.ShopOrderID
AND ShopOrder.OrderDate BETWEEN @startDate AND endDate
GROUP BY SalesRep.SalesRepID, SalesRep.Name
ORDER BY Total_Value DESC;
PostgreSQL没有“创建过程”。 据报道 ,在其他数据库中可能需要的存储过程大多数都可以在PostgreSQL中使用CREATE FUNCTION完成 。
不,你不能那样做。 您希望您的视图根据SalesRep.Name进行汇总。 您要做的是过滤这些SUM。 您有两种选择:
编辑
因此,您更改了问题,现在想在PostgreSql中创建一个存储过程。 您可能需要看一下: Postgres存储过程的基本介绍 。 花些时间阅读它,在此过程中获得的知识肯定会有所帮助。 而且,在进行此操作的过程中,您可能会重新考虑并认为对于诸如此类的简单查询,您实际上并不需要那种功能。 祝好运。
CREATE PROCEDURE
是在版本11中引入到PostgreSQL的,因此,如果您使用的是较早版本,则会收到ERROR: syntax error at or near "PROCEDURE"
从视图定义之外,您无权访问基础表。
您确定不是要使用CREATE FUNCTION
吗?
CREATE FUNCTION performance_Report(date, date)
您有AND ShopOrder.OrderDate BETWEEN @startDate AND endDate
不应该是AND ShopOrder.OrderDate BETWEEN @startDate AND @endDate
吗?
CREATE PROCEDURE performance_Report
@startDate DATE,
@endDate DATE
AS
SELECT Salesrep.Name, SUM(OrderLine.Quantity) AS Total_Sold, SUM(OrderLine.UnitSellingPrice * Orderline.Quantity) AS Total_Value
FROM SalesRep, OrderLine, ShopOrder
WHERE ShopOrder.SalesRepID = SalesRep.SalesRepID
AND OrderLine.ShopOrderID = ShopOrder.ShopOrderID
AND ShopOrder.OrderDate BETWEEN @startDate AND @endDate
GROUP BY SalesRep.SalesRepID, SalesRep.Name
ORDER BY Total_Value DESC;
否则,如果您完全删除了该行而不是存储过程,此查询是否有效?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.