我在workbench中编写了一个简单的mysql存储过程,然而,它抱怨语法错误。我的语法出了什么问题?
CREATE DEFINER=`root`@`localhost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
select * from indicators;
END
答案 0 :(得分:0)
您最好发布错误消息,即使我能猜出您遇到的问题。
MySQL的默认分隔符是&#34 ;;"。因此,MySQL Workbench将以下声明视为完整声明:
CREATE DEFINER=`root`@`localhost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
select * from indicators;
这绝对错了!
因此,在编写程序时,您应该明确更改分隔符。这是一个例子:
delimiter // -- change the delimiter temporarily
CREATE DEFINER=`root`@`localhost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
select * from indicators;
END //
delimiter ; -- restore the default delimiter
答案 1 :(得分:0)
查看此link以获取存储过程的简单示例。
对于您的问题:定义SP时,始终首先设置新的分隔符,以便在SP中使用常规分隔符(input[type='number'] {
-moz-appearance:textfield;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
)。如果你不这样做,SQL认为你在smicolon之后完成了你的查询,这不是你的查询的结尾,所以它会抛出一个错误。要设置新分隔符,请执行以下操作:
;
现在,您首先将分隔符设置为DELIMITER //
CREATE DEFINER=`root`@`localhost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
SELECT * FROM indicators;
...
END //
DELIMITER ;
,而sql只将simicolons存储在SP中。在//
,您说您的查询已完成并输入END
- 新的分隔符。然后将其设置回正常的simicolon,以便一如既往地继续。
答案 2 :(得分:-1)
使用此
DELIMITER $$
CREATE DEFINER=`root`@`locahost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
SELECT * from indicators;
END $$
DELIMITER ;
答案 3 :(得分:-1)
DELIMITER $$
CREATE DEFINER=`root`@`locahost` PROCEDURE `SelectIndicatorsByExistReferenceID`()
BEGIN
SELECT * from indicators;
END $$
DELIMITER ;