为什么我的 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//
我是 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//