[SQL] CREATE OR REPLACE PROCEDURE Pro_CalTotalPrice4Order(okey INTEGER) AS BEGIN UPDATE orders SET totalprice = (SELECT SUM(extendedprice * (1-discount) * (1+tax)) FROM lineitem WHERE orders.orderkey = lineitem.orderkey AND lineitem.orderkey = okey); [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'PROCEDURE Pro_CalTotalPrice4Order(okey INTEGER) AS BEGIN UPDATE orders SET to' at line 1
时间: 2023-07-02 17:18:33 浏览: 77
16337341(朱志儒)数据库系统实验61
根据你提供的代码,存储过程的语法是正确的。但是,可能是因为你的 MySQL 版本不支持 "CREATE OR REPLACE" 这样的语法。你可以尝试将它改成 "CREATE PROCEDURE" 或 "DROP PROCEDURE IF EXISTS" + "CREATE PROCEDURE" 的语法。
下面是修改后的代码:
```
DROP PROCEDURE IF EXISTS Pro_CalTotalPrice4Order;
CREATE PROCEDURE Pro_CalTotalPrice4Order(okey INTEGER)
AS
BEGIN
UPDATE orders
SET totalprice = (SELECT SUM(extendedprice * (1-discount) * (1+tax))
FROM lineitem
WHERE orders.orderkey = lineitem.orderkey AND lineitem.orderkey = okey);
END;
```
另外,你也可以查看一下你的 MySQL 版本是否支持存储过程的语法,如果不支持的话,你需要升级 MySQL 版本或者使用其他数据库。
阅读全文