为什么我的 Sql 脚本不起作用?

Why my Sql Script does not work?

我是 MySQL
的新手 我正在尝试生成随机数据并将其放入 table 'data'

但是SQLshell说我的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

它说我有语法问题 从声明变量

你能帮帮我吗?

试试这个,

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

缺少一些语法词:

  • 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//