MySQL-代码中存储的进程创建出现语法错误
在代码中执行createproc时,MYSQL(5.2版)中不断出现语法错误,这让我感到困惑 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
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 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。我猜无法通过程序更改分隔符。您使用的是什么语言用于处理?