我已经被一个问题困扰了好几个小时了。我正在 MYSQL 中构建一个存储过程,并在新的物理表中进行大量插入。以下只是一个示例,我无法在我的 MySQL 服务器中运行。
DROP PROCEDURE IF EXISTS `someProc`$$
CREATE DEFINER=`test`@`%` PROCEDURE `someProc`()
BEGIN
DROP TABLE IF EXISTS table1;
SET @SQL1 = ' CREATE TABLE `table1` (`last_updated` INT);
INSERT INTO `table1` (`last_updated`)
VALUES (1); ';
-- select @SQL1;
PREPARE stmt2 FROM @SQL1;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
END$$
DELIMITER ;
调用存储过程时,我收到 MySQL 错误代码 1064,表示
'INSERT INTO
table1(
last_updated)
周围存在错误。
但是我可以将分配给 @SQL1 变量的字符串内容作为有效的 MySQL 查询运行,并获取创建的表以及插入其中的值。我已经在谷歌上搜索了错误代码,并且按照博客/文档页面中的建议,我认为我没有在这里使用保留关键字,也没有插入任何不兼容的数据类型。它是简单的 SQL,可以在存储过程设置之外工作,但在过程内部会严重失败。有人可以透露一些信息吗?
使用商业智能;
删除程序 VCInplantFactProcedure;
分隔符 //
创建过程 VCInplantFactProcedure()
开始
插入fact_vcinplant_table(trip_id,dw_loader_id,dw_packer_id)
选择 ts.trip_id、dl.dw_loader_id、dp.dw_packer_id
从 tbl_ap_trip_stagging ts left joinDimension_loader dl on ts.loader_id=dl.loader
在 ts.packer_id=dp.packer 上左连接Dimension_packer dp;
结束// 分隔符;
选择插入通过存储过程正常工作在我的sql中不起作用 请帮忙