ERROR 1064 (42000) 如何更正语法?

Posted

技术标签:

【中文标题】ERROR 1064 (42000) 如何更正语法?【英文标题】:ERROR 1064 (42000) How Do I Correct the syntax? 【发布时间】:2020-10-21 14:22:00 【问题描述】:
DELIMITER $$
CREATE PROCEDURE prc_inv_amounts (W_IN IN NUMBER)
AS
W_CHK NUMBER = 0;
W_SUBT NUMBER = 0;
W_TAX NUMBER = 0;
BEGIN
SELECT COUNT(*) INTO W_CK FROM INVOICE WHERE INV_NUMBER = W_IN;
IF W_CK = 1 THEN
SELECT SUM(LINE_TOTAL) INTO W_SUBT FROM LINE
WHERE
LINE.INV_NUMBER = W_IN;
W_TAX =W_SUBT * 0.08;
UPDATE INVOICE
SET INV_SUBTOTAL = W_SUBT,
INV_TAX = W_TAX,
INV_TOTAL =W_SUBT + W_TAX
WHERE INV_NUMBER = W_IN;
END IF;
END; $$
DELIMTER ;

第 2 行的 ERROR 1064 (42000):您的 SQL 语法有错误; 检查与您的 mysql 服务器版本相对应的手册 在 'IN NUMBER) AS W_CHK NUMBER = 0 附近使用的正确语法; W_SUBT 数字 = 0; W_TAX NUMBER = 0; BEGIN SELEC' 在第 1 行

【问题讨论】:

IN 必须在参数名之前:proc_parameter: [ IN |输出 | INOUT ] param_name 类型。 dev.mysql.com/doc/refman/8.0/en/create-procedure.html 【参考方案1】:

您的语法错误。试试这个:

CREATE PROCEDURE prc_inv_amounts (IN W_IN NUMBER)

【讨论】:

@jaycarn,你有一个新的语法错误这一事实表明这篇文章回答了你发布的问题。您应该选择它作为正确答案,然后,如果您无法解决新问题,请发布一个包含该错误详细信息的新问题。

以上是关于ERROR 1064 (42000) 如何更正语法?的主要内容,如果未能解决你的问题,请参考以下文章

ERROR 1064 (42000):您的 SQL 语法有错误;想要将密码配置为 root 作为用户

ERROR 1064 (42000)MySQL中使用mysqladmin或set修改root密码时提示语法错误

错误 1064 (42000) : 使用 %s 附近的 SQL 语法有错误

为啥我是 laravel 抛出 SQLSTATE[42000]:语法错误或访问冲突:1064 错误

Mysql错误 ERROR 1064 (42000): You have an error in your SQL syntax

ERROR 1064 (42000)