如何在 mysql 服务器中执行动态 Sql 字符串作为查询?

Abh*_*tel 0 mysql sql

我创建了一个触发器,它创建一个动态查询。并执行它我尝试过“EXECU q”,但它不起作用。我如何运行/执行该动态查询。

BEGIN
    DECLARE a INT Default 0 ;
    DECLARE str  VARCHAR(255);
    DECLARE q VARCHAR(500);

    SET q = 'insert into '+new.master_name+' values(';

    simple_loop: LOOP
        SET a=a+1; 
        SET str = SPLIT_STRING(new.remarks,"|",a); 
        SET q = CONCAT(q,str+',');
        SET q = LEFT(q, LENGTH(q) - 1);
        IF str='' THEN
                LEAVE simple_loop; 
            END IF;


    END LOOP simple_loop; 
    SET q = CONCATE(q,');');

    EXEC q
END
Run Code Online (Sandbox Code Playgroud)

这是 Trigerr 这是我制作的函数 RETURN REPLACE( SUBSTRING( SUBSTRING_INDEX(str , delim , pos) , CHAR_LENGTH( SUBSTRING_INDEX(str , delim , pos - 1) ) + 1 ) , delim , '' )

Nae*_*Nae 5

我编写了一个存储过程来执行动态构造的 sql 语句。

用法

SET @index := 7;
CALL eval(CONCAT('SELECT ', @index));
Run Code Online (Sandbox Code Playgroud)

执行

DELIMITER $$

CREATE PROCEDURE eval(IN dynamic_statement TEXT)
  BEGIN
      SET @dynamic_statement := dynamic_statement;
      PREPARE prepared_statement FROM @dynamic_statement;
      EXECUTE prepared_statement;
      DEALLOCATE PREPARE prepared_statement;
  END$$

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)