MySQL中的动态查询以从其他模式中获取数据

时间:2020-10-09 20:33:03

标签: mysql sql dynamicquery dynamic-queries

我正在尝试使用存储过程来合并来自不同架构的数据,我也尝试过使用函数,但是坚持 错误1336:存储函数或触发器SQL语句中不允许使用动态SQL

任务是获取外部模式的项目详细信息,两个模式具有相同的表,列,project_id值

我的过程具有参数(模式名称,项目ID,列名称)

ALTER PROCEDURE `get_ext_projectdetails`(IN `db_name` VARCHAR(100), IN `project_id` VARCHAR(100), IN `column_name` VARCHAR(100), OUT `Name` VARCHAR(500))
BEGIN
set @db_name=db_name;
set @q = concat('select STR3 from STR1.projects as p where p.project_id = STR2');

set @r = REPLACE ( @q,"STR1",db_name);
set @s = REPLACE ( @r,"STR2",project_id);
set @t = REPLACE ( @s,"STR3",column_name);
        PREPARE stmt1 FROM @t;
        EXECUTE stmt1;
END

选择查询

 SELECT 
        `house`.`timeattendancedetails`.`timeattendance_id` AS `timeattendance_id`,
        `house`.`timeattendancedetails`.`id` AS `timeattendancedetails_id`,
        `house`.`timeattendancedetails`.`project_id` AS `project_id`,
        `house`.`timeattendancedetails`.`environment_id` AS `environment_id`,
        0 AS `external_project_id`,
        LOWER(`clients`.`name`) AS `schema_name`,
        **call get_ext_projectdetails (schema_name,674,'name',@name)**
    FROM
        ((`house`.`systemx_timeattendancedetails`
        LEFT JOIN `house`.`projects` ON ((`house`.`timeattendancedetails`.`project_id` = `house`.`projects`.`id`)))
        LEFT JOIN `house`.`clients` ON ((`clients`.`id` =`house`.`timeattendancedetails`.`environment_id`)))
    WHERE
        (`house`.`timeattendancedetails`.`environment_id` IS NOT NULL)

预期产量

Timeattendence_id- || -timeattendancedetails_id- || -project_id- || -environment_id- || -schema_name- ||-外部project_id

0 个答案:

没有答案
相关问题