【发布时间】:2014-07-25 14:21:17
【问题描述】:
我正在构建一系列程序,我必须在几乎所有程序中插入通用名称,并在多个列中插入。
所以我想创建一个为我生成“文本”的程序。正文的代码是这样的:
SELECT CONCAT( CHAR( FLOOR(65 + (RAND() * 25))));
这会为我生成一个随机字符。所以这是我制作的程序:
DELIMITER ;;
CREATE DEFINER=`my_definer`@`localhost` PROCEDURE GenericName(IN NumRows INT,OUT retorno VARCHAR)
BEGIN
DECLARE i INT;
SET i = 1;
SET retorno = "";
WHILE i <= NumRows DO
SET retorno = SELECT CONCAT( CHAR( FLOOR(65 + (RAND() * 25))));
SET i = i + 1;
END WHILE;
END;;
DELIMITER ;
当我尝试创建程序时出现以下错误:
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 ') 开始声明 i INT;设置我 = 1; SET retorno = "";
基于错误,我认为这是愚蠢的,但我在创建存储过程方面没有太多专业知识,我可能会想太多。
PS(这是我在完成上述过程后计划做的未来用法):想法是通过以下方式在其他过程中调用此过程:
INSERT INTO tbl_a (name, position) VALUES (CALL GenericName(7), CALL GenericName(5));
外部链接:
- 我看到这里“Calling a Stored Procedure in a Stored Procedure in MySQL”可以从另一个过程调用一个过程
【问题讨论】:
-
最初我试图做类似
SET retorno = CONCAT( retorno, SELECT CONCAT( CHAR( FLOOR(65 + (RAND() * 25)))) );这样的事情,所以我可以创建一个完整的字符串(我想要多少字符都可以)。但是,我什至没有完成上面的=(
标签: mysql sql stored-procedures