【问题标题】:Syntax error 1064 - insert doesn't work as stored procedure语法错误 1064 - 插入不能用作存储过程
【发布时间】:2015-04-22 09:55:43
【问题描述】:

我创建了一个作为 sql 语句工作的插入查询,但是当我尝试通过 MYSQL 管理员将其实现为存储过程时,我收到 MYSQL 错误 1064“您的 SQL 语法有错误。...在 DELIMITER / 附近/ 丢弃程序" 声明如下:

DELIMITER //
DROP PROCEDURE IF EXISTS `LoadRecs_proc`;

CREATE DEFINER=`root`@`%` PROCEDURE `LoadRecs_proc`()
BEGIN

INSERT into Assignments_tbl (AccountId, ActivityID, ActivityDate, pname, CustomerName, GroupName, ProviderName, Contact, Phone, Extension, Selected, Closed)
Select
  tbl_ca.AccountId,
  tbl_ca.ActivityID,
  tbl_ca.ActivityDate,
  Concat_Ws(', ', tblcust.`Last Name`, tblcust.`First Name`) As pname,
  cust.CustomerName,
  tbl_cp.GroupName,
  tblproviders.ProviderName,
  tblproviders.Contact,
  tblproviders.Phone,
  tblproviders.Extension,
  0 As Selected,
  0 As Closed
From
  (((tbl_ca Inner Join
  (tbl_cp Inner Join
  cust.On tbl_cp.UID= cust.UID)
On tbl_ca.AccountId = tbl_cp.AccountId) Inner Join
  tblproviders On tbl_ca.ProviderId = tblproviders.ProviderId)
  Inner Join
  cust On tbl_cp.CustomerId = cust.CustomerId)
  Left Join
  FollowupAssignments_tbl On tbl_ca.ActivityDate =
    FollowupAssignments_tbl.ActivityDate And
tbl_ca.ActivityID =
FollowupAssignments_tbl.ActivityID And
tbl_ca.AccountId = FollowupAssignments_tbl.AccountId
Where
  tbl_ca.ActivityID = 76 And
  tbl_ca.ResponseDate Is Null And
  tbl_cp.Status = "Active" And
  tbl_cp.CustomerId = 33  And
  FollowupAssignments_tbl.AccountId Is Null And
  FollowupAssignments_tbl.ActivityID Is Null And
  FollowupAssignments_tbl.ActivityDate Is Null
  ;

END//
DELIMITER ;

【问题讨论】:

    标签: mysql stored-procedures


    【解决方案1】:

    将第一个换行。您想在为CREATE PROCEDURE 语句设置分隔符之前运行DROP PROCEDURE

    从这里:

    DELIMITER //
    DROP PROCEDURE IF EXISTS `LoadRecs_proc`;
    

    到这里:

    DROP PROCEDURE IF EXISTS `LoadRecs_proc`;
    DELIMITER //
    

    【讨论】:

    • 现在它显示“... DELIMITER 附近 // CREATE DEFINER=root@% PROCEDURE LoadRecs_proc() BEGIN”'在第 8 行
    • 第 8 行是 Delimiter 关键字所在的位置。
    • 退出客户端并重新进入。执行 DROP,以“;”结尾。然后在一行上单独执行 DELIMITER // -- 。然后继续创建。
    【解决方案2】:

    它不喜欢 DROP PROCEDURE。我消除了它,它运行了。它也不是 IF EXISTS。 这是MYSQL 5.7.3-m13 64位社区版。

    感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 2014-11-22
      • 2018-08-15
      • 1970-01-01
      相关资源
      最近更新 更多