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

问题描述

我正在尝试使用存储过程来合并来自不同架构的数据,我也尝试过使用函数,但是坚持 错误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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...