【问题标题】:use declare @ syntax error unexpected in mysql workbench 6.2在 mysql workbench 6.2 中使用声明 @ 语法错误意外
【发布时间】:2015-07-21 16:08:34
【问题描述】:

我的数据库使用 mysql workbench 6.2。

我创建了执行查询字符串的过程,但它为变量“declare @str varchar(2000)”报错“语法错误意外”。我尝试删除变量中的“@”,但在“PREPARE stmt FROM str;”行中无效。它通知错误“unexpected str

这是我的代码:

CREATE DEFINER=`root`@`localhost` PROCEDURE `new_procedure`()
BEGIN
declare @str varchar(2000) DEFAULT '';
set @str = 'select * from category;';
PREPARE stmt FROM @str;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

【问题讨论】:

  • 仅删除 @ 无济于事,准备好的语句必须使用会话变量。 (请参阅下面的改进答案)

标签: mysql


【解决方案1】:

没有声明会话变量。你不需要(也不能这样做)

DECLARE @str varchar(2000) DEFAULT '';

只需要你已经拥有的那一套

SET @str = 'select * from category;';

顺便说一句,最好在这种情况下将会话变量命名为唯一名称(以防调用过程的连接已经使用简单名称来命名其他内容)。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @dhh 它确实提供了答案;但我承认它可能会更冗长一些,因为它可以被解释为“删除@”。
猜你喜欢
  • 2013-07-19
  • 2016-08-28
  • 2014-02-23
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
相关资源
最近更新 更多