我的应用程序使用一些存储过程相当快地插入到多个表中。每个表中插入行的 PK 值用于插入到下一个表中:
基本上,我的存储过程如下所示:
create procedure `insert_file`(out @fileid bigint, @filedata longblob, @datesaved datetime)
begin
insert into file(filedata, datesaved)
values(@filedata, @datesaved);
set @fileid = last_insert_id();
end $$
delimiter ;
我所期望的是输出刚刚插入的行的 ID,以便我可以在我的“加入”表(将此文件连接到另一个对象的表 - 例如用户或文章)中使用它。
这是我的阅读代码:
Int64 lastInsertID;
// db.getReader(string cmd, List<MySqlParameter>());
using (MySqlDataReader dr = db.getReader("insert_file", requiredParameters))
{
if (dr.HasRows())
{
dr.Read();
lastInsertID = dr.GetInt64("@fileid");
}
}
虽然这在我的脑海中似乎是有道理的,但我一直收到一个错误:
在结果中找不到指定的列:@fileid
有人可以帮我理解我在这里做错了什么(以及如何解决它)吗?