我有以下MySQL查询。
DECLARE RecCount Int Default 0;
SET RecCount=(select count(*) from tables where WaiterID=1 and date(TDate)=date(now()));
当我执行它时,我收到以下错误:
Error Code: 1193. Unknown system variable 'RecCount'
所以,我用Google搜索“在MySQL中声明变量”。似乎每个人都使用DECLARE
:
我不明白为什么我的查询没有执行。
我正在使用MYSQL WORKBENCH 6.0 CE,我最终想在PHP中执行此查询。
修改
我使用默认值为0.如果我删除默认值0,并将查询更改为我在下面写的内容,它将执行。但它仍然无法保存结果!
SET RecCount=(select count(*) from tables where WaiterID=1 and date(TDate)=date(now()));
SELECT RecCount;
答案 0 :(得分:5)
如果使用控制语句,则必须在函数或过程中使用它们。
MySQL支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT构造,用于存储程序中的流控制。
答案 1 :(得分:1)
您找到的manual page for DECLARE
说:
此声明声明存储程序中的局部变量 。
如果您在其他地方使用DECLARE
,则会出现语法错误:
的MySQL> DECLARE RecCount Int默认值0;
ERROR 1064(42000):你有一个 SQL语法错误;查看与您的手册相对应的手册 用于在'DECLARE附近使用的r语法的MySQL服务器版本 RecCount Int第1行的默认值0'
你的first result清楚地定义了一个BEGIN...END
代码块,它不起作用(因此问题),因为MySQL不支持匿名代码块。
你的MySQL客户端可能没有配置为中止错误,你只能得到最后一个。
我的印象是你在会话变量之后但你没有使用DECLARE
:you use SET
:
mysql> SET @foo='bar';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @foo;
+------+
| @foo |
+------+
| bar |
+------+
1 row in set (0.00 sec)