我正在尝试创建一个存储过程,允许我输入文件,年份和字符串,并将其添加到MySQL中现有表的末尾。但是,当我尝试调用程序时,它不会将输入文件识别为FROM子句中的变量。有没有人有任何纠正这个问题的技巧?我是创建SQL程序的新手,但已经研究过动态SQL,并且想知道这是否可以替代?在此先感谢您的帮助,我很乐意发布任何其他信息。
源文件列是ACS_Code和Descriptive_Title, 输出表列为Year,Data_Profile,ACS_Code和Descriptive_Title。
> dfy
p1 p2 p3 p4
c1 a2 c3 c4
d1 a1 d3 d4
e1 a3 e3 e4
f1 a2 f2 f4
g1 a1 g2 g3
h1 a3 h2 h3
这是调用命令和错误信息:
DELIMITER //
DROP PROCEDURE IF EXISTS `padata`.`Load_ACS_Data_Profile_Code_Def`//
CREATE PROCEDURE `padata`.Load_ACS_Data_Profile_Code_Def(IN file VARCHAR(255), IN Data_Profile Varchar(50), IN Year INT) # Input("Social","Economic","Housing",or "Demographic_Housing") for Dataprofile
BEGIN
INSERT INTO padata.ACS_5yr_Selected_Code_Definitions(
Year,
Data_Profile,
ACS_Code,
Descriptive_Title)
SELECT
Year AS Year,
Data_Profile AS Data_Profile,
a.ACS_Code AS ACS_Code,
a.Descriptive_Title AS Descriptive_Title
FROM
`padata`.file a ; #Where file is a parameter that is passed
END //
DELIMITER ;
答案 0 :(得分:1)
什么是alloca
,在我看来,您指的是操作系统上的文件。不要说它是输入文件。它是一个varchar(字符串)。
它当然不是db中的一个名为file
的表。
存储的proc IN意味着你传入的参数如字符串,int类的东西。它不会打开从文件中读取的流。
修改强>:
padata