我是学习存储过程的新手。现在我正在尝试创建一个生成随机数的过程并将其存储在变量中,然后将该值插入另一个表中。
create procedure getRand()
begin
delcare rc varchar(255);
SELECT CHAR(ROUND(65 + FLOOR( RAND() * 57 ))) into rc;
insert into Rand_loader (snum,rnum) values (rc,rc);
end//
但是当我尝试在mysql上运行它时,它会出现此错误
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rc varchar(255);
SELECT CHAR(ROUND(65 + FLOOR( RAND() * 57 ))) into rc;
insert' at line 3
我无法理解这个错误。感谢您的帮助。请帮我解决此问题
答案 0 :(得分:2)
尝试以下代码。它对我有用
DELIMITER $$
CREATE
/*[DEFINER = { user | CURRENT_USER }]*/
PROCEDURE `yourdatabasename`.`getRand`()
/*LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
| COMMENT 'string'*/
BEGIN
DECLARE rc VARCHAR(255);
SELECT CHAR(ROUND(65 + FLOOR( RAND() * 57 ))) INTO rc;
INSERT INTO Rand_loader (snum,rnum) VALUES (rc,rc);
END$$
DELIMITER ;
您可以从此处下载SQLyog
https://code.google.com/p/sqlyog/downloads/list
使用可视化工具创建表和存储过程
答案 1 :(得分:1)
你写的“声明”错了。
CREATE PROCEDURE `getRand`()
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
declare rc varchar(255);
SELECT CHAR(ROUND(65 + FLOOR( RAND() * 57 ))) into rc;
insert into Rand_loader (snum,rnum) values (rc,rc);
END
答案 2 :(得分:0)
您只需要将declare
替换为DECLARE
,并在编写SQL命令时始终尝试使用大写字母。