如何在 SQL 存储过程中生成可读名称?

how to generate a readable name in a SQL stored procedure?

在存储过程中,我想生成一个 'name' 字段以填充虚拟数据 table。 我使用它并且有效:

SET @nom = CONV(FLOOR(RAND() * 99999999999999), 20, 36);

但由于这是一个名称字段,我希望只有字母,而不是字母和数字的混合体。 我想尝试这样的东西,但它不起作用

  SET @lenght=8+rand() *10; -- Définit une longueur aléatoire compris entre 8 et 18 caractères
  SET@nom='';
  WHILE @lenght>0 DO
     @nom = CONCAT(@nom, char(round(rand()*25+65,0)));
     SET @lenght=@lenght -1;
  END WHILE;

你有什么想法吗? 数组类型的变量不能用? 我本可以在循环的每次迭代中在数组变量中取一个随机字符

SET @vowel= ('a','e','i', 'o','u','y');

对于MySQL:

CREATE FUNCTION generate_random_word (len TINYINT UNSIGNED)
RETURNS VARCHAR(255)
BEGIN
DECLARE result VARCHAR(255) DEFAULT '';
    REPEAT
        SET result = CONCAT(result, CHAR(CEIL(RAND()*26+64)));
        SET len = len - 1;
    UNTIL !len END REPEAT;
RETURN result;
END

https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=e2732456d0d418b1b181a4352c534119