问题描述
我正在尝试使用存储过程来合并来自不同架构的数据,我也尝试过使用函数,但是坚持 错误1336:存储函数或触发器sql语句中不允许使用动态sql
任务是获取外部模式的项目详细信息,两个模式具有相同的表,列,project_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 (将#修改为@)