使用SET的MYSQL变量导致行为差异

时间:2012-09-27 20:01:40

标签: mysql variables set session-variables

为什么使用SET设置变量时,在某些情况下可以使用一个语句设置多个变量,而在其他情况下需要发出两个单独的变量。

例如,这样可以正常工作:

SET
@uname := 'John',
@acct_trade := 218.01,
@acct_labor := 518.01,
@acct_cntgy := 818.01;

仅使用一个分号。

然而当它是这样的:

SET @datestart := '2012-01-01',
SET @dateend :=  '2012-02-29';

它不起作用。我必须让它们各自打电话。

SET @datestart := '2012-01-01';
SET @dateend :=  '2012-02-29';

我假设这与它要求2个字符串的事实有关。我甚至试过将它投射到目前为止。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在失败的示例中,您有两次SET关键字。如果你从第二行删除它应该工作:

SET
@datestart := '2012-01-01',
@dateend :=  '2012-02-29';

这是因为SET关键字作为完整语句起作用 - 直到结束分号。当它遇到另一个SET关键字时,它的语法无效。