【问题标题】:mysql syntax error 1064 on create proceduremysql 在创建过程中出现语法错误 1064
【发布时间】:2016-08-09 14:51:55
【问题描述】:

您好,我已经创建了一个表,现在正在创建一个存储过程。

CREATE PROCEDURE p_order_insert (in in_agent_id Varchar(10),in in_rate_city varchar(15),in in_sendername varchar(50),in in_senderaddress1 varchar(50),in in_senderaddress2 varchar(50),in in_senderaddress3 varchar(50),in in_senderaddress4 varchar(50),in in_sendercity varchar(50),in in_senderstate varchar(50),in in_senderpostcode varchar(10),in in_sendercountry varchar(15),in in_receivername varchar(50),in in_receiveraddress1 varchar(50),in in_receiveraddress2 varchar(50),in in_receiveraddress3 varchar(50),in in_receiveraddress4 varchar(50),in in_receivercity varchar(50),in in_receiverstate varchar(50),in in_receiverpostcode varchar(10),in in_receivercountry varchar(15),in in_item1_description varchar(80),in in_item2_description varchar(80),in in_item3_description varchar(80),in in_item4_description varchar(80),in in_item5_description varchar(80),in in_item6_description varchar(80),in in_item1_quantity int,in in_item2_quantity int,in in_item3_quantity int,in in_item4_quantity int,in in_item5_quantity int,in in_item6_quantity int,in in_item1_weight double,in in_item2_weight double,in in_item3_weight double,in in_item4_weight double,in in_item5_weight double,in in_item6_weight double,in in_item1_value double,in in_item2_value double,in in_item3_value double,in in_item4_value double,in in_item5_value double,in in_item6_value double,in in_order_status Varchar(10),in in_total_price double,in in_agent_commission double,in in_payment_received Varchar(10), OUT out_awb_ref_id Varchar (10))   BEGIN
INSERT INTO hvp_order_master (agent_id, rate_city, sendername, senderaddress1, senderaddress2, senderaddress3, senderaddress4, sendercity, senderstate, senderpostcode, sendercountry, receivername, receiveraddress1, receiveraddress2, receiveraddress3, receiveraddress4, receivercity, receiverstate, receiverpostcode, receivercountry, item1_description, item2_description, item3_description, item4_description, item5_description, item6_description, item1_quantity, item2_quantity, item3_quantity, item4_quantity, item5_quantity, item6_quantity, item1_weight, item2_weight, item3_weight, item4_weight, item5_weight, item6_weight, item1_value, item2_value, item3_value, item4_value, item5_value, item6_value, order_status, total_price, agent_commission, payment_received) 
VALUES 
(in_agent_id, in_rate_city, in_sendername, in_senderaddress1, in_senderaddress2, in_senderaddress3, in_senderaddress4, in_sendercity, in_senderstate, in_senderpostcode, in_sendercountry, in_receivername, in_receiveraddress1, in_receiveraddress2, in_receiveraddress3, in_receiveraddress4, in_receivercity, in_receiverstate, in_receiverpostcode, in_receivercountry, in_item1_description, in_item2_description, in_item3_description, in_item4_description, in_item5_description, in_item6_description, in_item1_quantity, in_item2_quantity, in_item3_quantity, in_item4_quantity, in_item5_quantity, in_item6_quantity, in_item1_weight, in_item2_weight, in_item3_weight, in_item4_weight, in_item5_weight, in_item6_weight, in_item1_value, in_item2_value, in_item3_value, in_item4_value, in_item5_value, in_item6_value, in_order_status, in_total_price, in_agent_commission, in_payment_received); END;;

但是,我得到了

1064 - Erreur de syntaxe près de '' à la ligne 6 我看不到这样的问题。

有人可以帮忙吗?

【问题讨论】:

  • 那是一段代码。你想格式化它,以便我们可以阅读它。我打算这样做,但那里有很多代码。 如果您需要任何帮助
  • 格式化它,以便 Ligne 6代码中的第 6 行 目前只有4行

标签: mysql stored-procedures mysql-error-1064


【解决方案1】:

当您包含 DELIMITER 包装器时,它会保存,如下所示。

此外,我确信您的架构设计很糟糕。

DROP PROCEDURE IF EXISTS p_order_insert;
DELIMITER $
CREATE PROCEDURE p_order_insert 
(in in_agent_id Varchar(10),
in in_rate_city varchar(15),
in in_sendername varchar(50),
in in_senderaddress1 varchar(50),
in in_senderaddress2 varchar(50),
in in_senderaddress3 varchar(50),
in in_senderaddress4 varchar(50),
in in_sendercity varchar(50),
in in_senderstate varchar(50),
in in_senderpostcode varchar(10),
in in_sendercountry varchar(15),
in in_receivername varchar(50),
in in_receiveraddress1 varchar(50),
in in_receiveraddress2 varchar(50),
in in_receiveraddress3 varchar(50),
in in_receiveraddress4 varchar(50),
in in_receivercity varchar(50),
in in_receiverstate varchar(50),
in in_receiverpostcode varchar(10),
in in_receivercountry varchar(15),
in in_item1_description varchar(80),
in in_item2_description varchar(80),
in in_item3_description varchar(80),
in in_item4_description varchar(80),
in in_item5_description varchar(80),
in in_item6_description varchar(80),
in in_item1_quantity int,
in in_item2_quantity int,
in in_item3_quantity int,
in in_item4_quantity int,
in in_item5_quantity int,
in in_item6_quantity int,
in in_item1_weight double,
in in_item2_weight double,
in in_item3_weight double,
in in_item4_weight double,
in in_item5_weight double,
in in_item6_weight double,
in in_item1_value double,
in in_item2_value double,
in in_item3_value double,
in in_item4_value double,
in in_item5_value double,
in in_item6_value double,
in in_order_status Varchar(10),
in in_total_price double,
in in_agent_commission double,
in in_payment_received Varchar(10), 
OUT out_awb_ref_id Varchar (10))   
BEGIN
INSERT INTO hvp_order_master (agent_id, rate_city, sendername, senderaddress1, senderaddress2, 
senderaddress3, senderaddress4, sendercity, senderstate, senderpostcode, sendercountry, 
receivername, receiveraddress1, receiveraddress2, receiveraddress3, receiveraddress4, 
receivercity, receiverstate, receiverpostcode, receivercountry, item1_description, 
item2_description, item3_description, item4_description, item5_description, 
item6_description, item1_quantity, item2_quantity, item3_quantity, item4_quantity, 
item5_quantity, item6_quantity, item1_weight, item2_weight, item3_weight, item4_weight, 
item5_weight, item6_weight, item1_value, item2_value, item3_value, item4_value, item5_value, 
item6_value, order_status, total_price, agent_commission, payment_received) 
SELECT  
 in_agent_id, in_rate_city, in_sendername, in_senderaddress1, in_senderaddress2, 
in_senderaddress3, in_senderaddress4, in_sendercity, in_senderstate, in_senderpostcode, 
in_sendercountry, in_receivername, in_receiveraddress1, in_receiveraddress2, in_receiveraddress3, 
in_receiveraddress4, in_receivercity, in_receiverstate, in_receiverpostcode, in_receivercountry, 
in_item1_description, in_item2_description, in_item3_description, in_item4_description, 
in_item5_description, in_item6_description, in_item1_quantity, in_item2_quantity, in_item3_quantity,
 in_item4_quantity, in_item5_quantity, in_item6_quantity, in_item1_weight, in_item2_weight, 
 in_item3_weight, in_item4_weight, in_item5_weight, in_item6_weight, in_item1_value, in_item2_value, 
 in_item3_value, in_item4_value, in_item5_value, in_item6_value, in_order_status, in_total_price, 
 in_agent_commission, in_payment_received; 
 END$$
 DELIMITER ;

DELIMITER 的需求取决于您使用的客户端工具。对于 PHPMyAdmin,通常不需要。

使用 MySQL Workbench。

【讨论】:

  • 感谢 Drew,但在 #1064 上仍然出现错误 - Erreur de syntaxe près de '' à la ligne 72
  • 现在怎么样。刚醒来,需要咖啡
  • 你有什么改变吗?
  • 是的,中间的 select stmt 和一些括号
  • 现在可以了。问题出在基于浏览器的 MYSQL 上。谢谢 DREW
【解决方案2】:

在开头添加DELIMITER @@。此外,在您的代码末尾,您有两次 ;END;; 1 就够了。

DELIMITER @@
CREATE PROCEDURE...
END@@
DELIMITER;

【讨论】:

    猜你喜欢
    • 2019-04-01
    • 2012-10-22
    • 2022-01-15
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2018-01-26
    • 2010-10-12
    相关资源
    最近更新 更多