在mysql中声明变量失败

问题描述 投票:0回答:2

这是我尝试运行下图所示的查询时得到的错误。

错误代码: 1064. 你的SQL语法有错误;请检查你的MySQL服务器版本对应的手册,以了解在第1行 "DECLARE productCount INT DEFAULT 0 "附近使用的正确语法。

我在ubuntu上使用Mysql工作台。

  • MySQL Workbench Community (GPL) for LinuxUnix 6.3.8 CE build 1228 (64 bit)
  • 开罗版本:1.15.10
  • 操作系统:Linux 5.3.0-47-generic Linux 5.3.0-47-generic
  • 中央处理器:4x Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (500.028MHz) - 15.53GiB内存 4x Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (500.028MHz)- 15.53GiB RAM。
  • 发行版。Ubuntu 18.04.4 LTS
  • 启用Fips模式:无

enter image description here

mysql mysql-workbench mysql-error-1064
2个回答
1
投票

你只能在例程中声明变量。


1
投票

DECLARE只能用于触发器,函数和存储过程betewenn BEGIN和END见 mysql maual

如果你想使用一个变量,声明一个用户定义的变量,比如@msg

use testdb;
SET @msg := 'testme if you can';
SET @testcount := 0;

SELECT @msg,@testcount + 1;

结果:在存储过程中只能使用DECLARE。

# @msg, @testcount + 1
testme if you can, 1

1
投票

只能在存储过程中使用DECLARE。下面是一个简单的例子,将两个变量传递给存储过程,并在存储过程中声明一个变量。

CREATE DEFINER=`myslq_user`@`%` PROCEDURE `createRecord`(IN _name NVARCHAR(255), IN _userID int)
BEGIN
    DECLARE val INT DEFAULT 0;
        INSERT INTO tbldata (Name, UserID, Value) VALUES (_name, _userID, val);
    END IF;
END
© www.soinside.com 2019 - 2024. All rights reserved.