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