我是MySQL的新手 我正在尝试生成随机数据并将其放入表'数据'
但SQL shell说我的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
它说我有语法问题 来自声明变量
你可以帮帮我吗?答案 0 :(得分:0)
试试这个,
DECLARE @counter smallint,
DECLARE @A BOOLEAN,
DECLARE @B BOOLEAN,
DECLARE @C int(4),
DECLARE @LABEL BOOLEAN;
答案 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//