MySQL-代码中存储的进程创建出现语法错误

MySQL-代码中存储的进程创建出现语法错误,mysql,Mysql,在代码中执行createproc时,MYSQL(5.2版)中不断出现语法错误,这让我感到困惑 MySQL程序代码: DELIMITER // CREATE PROCEDURE Delete_BillOfMaterialsDetail (IN InOrderDate DATE, IN InProductCode varchar(40), IN InRawMaterialProductCode varchar(40) ) BEGIN IF EXISTS (SELE

在代码中执行createproc时,MYSQL(5.2版)中不断出现语法错误,这让我感到困惑

MySQL程序代码:

DELIMITER //

CREATE PROCEDURE Delete_BillOfMaterialsDetail
(IN InOrderDate DATE,     
IN InProductCode varchar(40),     
IN InRawMaterialProductCode varchar(40) 
) 
BEGIN     
IF EXISTS
(SELECT * FROM basf_rawmaterialplanning.BillOfMaterialsDetail          
WHERE OrderDate = InOrderDate  
and ProductCode = InProductCode          
and RawMaterialProductCode = InRawMaterialProductCode)  
THEN  
DELETE FROM basf_rawmaterialplanning.BillOfMaterialsDetail
WHERE OrderDate = InOrderDate    
AND ProductCode = InProductCode
AND RawMaterialProductCode = InRawMaterialProductCode;
END IF; 
END //

DELIMITER ;
我使用字符串数据类型构建它,然后对DB执行它,这会导致语法错误

我不确定我做错了什么

  • 谢谢各位,我想出来了,会在StackOverflow允许的情况下发布答案

只需分别执行更改分隔符的命令,然后执行存储过程create命令

系统当前将其视为一个命令,因此出现错误:)

请尝试此代码-

CREATE PROCEDURE Delete_BillOfMaterialsDetail3(
  IN InOrderDate DATE,
  IN InProductCode varchar(40),
  IN InRawMaterialProductCode varchar(40)) 
DELETE FROM basf_rawmaterialplanning.BillOfMaterialsDetail
WHERE OrderDate = InOrderDate    
AND ProductCode = InProductCode
AND RawMaterialProductCode = InRawMaterialProductCode;

谢谢大家,终于明白了


我在MySqlScript对象中添加了我的脚本,并使用该类执行,100%有效,没有任何语法错误

什么是错误消息?我已经在mysql 5.1.58上进行了测试,对我来说效果很好;查看与您的MySQL服务器版本对应的手册,以了解使用“DELIMITER//CREATE PROCEDURE Delete_BillOfMaterialsDetail”的正确语法(在InOrderDate DATE'中,第1行的错误号为1064@user1495778:错误消息从您查询的开始处开始。这意味着您执行查询的方式有问题。如果此创建脚本是在另一个脚本中创建的,您将如何执行它?@juergend:是的,我可以看到,但我看不到它错在哪里。如果我在workb中运行查询ench它工作正常。我正在声明一个连接和一个命令,将命令类型设置为commandText,设置文本并执行它。MySqlCommand cmd=new MySqlCommand(SQLCommandText,conn);cmd.CommandType=System.Data.CommandType.text;cmd.ExecuteNonQuery();string SQLCommandTextPre=“DELIMITER/”;MySqlCommand cmd=new MySqlCommand(SQLCommandTextPre,conn);cmd.CommandType=System.Data.CommandType.Text;cmd.ExecuteNonQuery();我已经取出了它,但是当我单独执行它时,我得到了一个类似的错误:您的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行的“DELIMITER//”附近使用的正确语法以及错误号1064。我猜无法通过程序更改分隔符。您使用的是什么语言用于处理?