2015-10-18 56 views
-2

我是新手到MySQL
我试图生成随机数据,并把它放入表“数据”为什么我的Sql脚本不起作用?

但SQL壳说,我的SQL代码有语法错误
但我找不到为什么

DECLARE @counter smallint; 
DECLARE @A BOOLEAN; 
DECLARE @B BOOLEAN; 
DECLARE @C int(4); 
DECLARE @LABEL BOOLEAN; 

SET @counter = 1; 
WHILE @counter < 100 
    BEGIN 
     IF 0.5 > RAND() 
      SET @A = TRUE; 
     ELSE 
      SET @A = FALSE; 
     IF 0.5 > RAND() 
      SET @B = TRUE; 
     ELSE 
      SET @B = FALSE; 

     SET @C = RAND() * 10 
     SET @LABEL = @A^@B OR @LABEL > 5 

     INSERT INTO data (A,B,C,LABEL) VALUES (@A,@B,@C,@LABEL) 
     @count = @count +1 
    END 

它说,我从声明变量

你能帮助我的语法问题 ?

+1

显示错误消息 –

回答

0

缺少一些语法词:

  • IF ... THEN ... ELSE ... END IF;
  • WHILE ... DO ... END WHILE;

是非常重要的理解,用户变量写成@var_name,所以用户定义的变量是会话特有的。也就是说,由一个客户端定义的用户变量不能被其他客户端看到或使用。当客户端退出时,给定客户端会话的所有变量都会自动释放。在这种情况下,我认为这没有必要。

SET,或者=:=可以用作赋值运算符。

试试这个:

delimiter // 

CREATE PROCEDURE TEST() 
BEGIN 
    DECLARE counter smallint; 
    DECLARE A BOOLEAN; 
    DECLARE B BOOLEAN; 
    DECLARE C int(4); 
    DECLARE LABEL BOOLEAN; 

    SET counter = 1; 
    WHILE counter < 100 DO 
     IF 0.5 > RAND() THEN 
      SET A = TRUE; 
     ELSE 
      SET A = FALSE; 
     END IF; 

     IF 0.5 > RAND() THEN 
      SET B = TRUE; 
     ELSE 
      SET B = FALSE; 
     END IF; 

     SET C = RAND() * 10; 

     IF A^B OR LABEL > 5 THEN 
      SET LABEL = TRUE; 
     ELSE 
      SET LABEL = FALSE; 
     END IF; 

     INSERT INTO data (A,B,C,LABEL) VALUES (A,B,C,LABEL); 
     SET counter = counter +1; 
    END WHILE; 
END// 
0

试试这个,

DECLARE @counter smallint, 
DECLARE @A BOOLEAN, 
DECLARE @B BOOLEAN, 
DECLARE @C int(4), 
DECLARE @LABEL BOOLEAN;