首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用声明的未知系统变量

问使用声明的未知系统变量
EN

Stack Overflow用户
提问于 2013-10-07 11:53:25
回答 2查看 18.3K关注 0票数 4

我有以下MySQL查询。

代码语言:javascript
复制
DECLARE RecCount Int Default 0;
SET RecCount=(select count(*) from tables where WaiterID=1 and date(TDate)=date(now()));

当我执行它时,我会得到以下错误:

代码语言:javascript
复制
Error Code: 1193. Unknown system variable 'RecCount'

因此,我在谷歌上搜索了“在MySQL中声明变量”。似乎每个人都使用DECLARE

我不明白为什么我的查询不执行。

我正在使用MYSQL工作台6.0CE,我最终希望在PHP中执行这个查询。

编辑:

我使用了默认值为0。如果删除默认的0,并将查询更改为下面所写的内容,它将执行。但是它仍然没有像它应该的那样保存结果!

代码语言:javascript
复制
SET RecCount=(select count(*) from tables where WaiterID=1 and date(TDate)=date(now()));
SELECT RecCount;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-07 11:58:45

您必须在一个过程或函数中运行该代码。

如果使用控制语句,则必须在函数或过程中使用它们。

MySQL支持用于存储程序中流控制的IF、CASE、ITERATE、LOOP循环、within和REPEAT结构。

来源

票数 5
EN

Stack Overflow用户

发布于 2013-10-07 12:02:31

你发现的DECLARE说:

此语句在存储的程序中声明局部变量。

如果在其他地方使用DECLARE,则会出现语法错误:

mysql>声明RecCount默认为0; 错误1064 (42000):您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行使用接近“RecCount Int默认值0”的r语法。

您的https://stackoverflow.com/questions/11505522/mysql-declaring-variables清楚地定义了一个BEGIN...END代码块,由于MySQL不支持匿名代码块,所以它不能工作(这就是问题所在)。

您的MySQL客户端可能没有被配置为在错误时中止,而且您只得到了最后一个错误。

我的印象是,您在跟踪会话变量,但不使用DECLARE:SET

代码语言:javascript
复制
mysql> SET @foo='bar';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @foo;
+------+
| @foo |
+------+
| bar  |
+------+
1 row in set (0.00 sec)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19224213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档