我有一个带有两个varchar输入参数和一个int输出参数的存储过程。我的想法是传入表名和唯一字符串,检查表以查看表中是否已存在该字符串并返回该记录的id(如果存在)。目前,sproc看起来像:
BEGIN
SET @getID = CONCAT('SELECT `id` as id_Out FROM ',tablename_In,' WHERE `formSecret`=',formSecret_In);
PREPARE stmt FROM @getID;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
如果我传入一个号码,一切正常,我会得到一个记录ID。如果我传入一个完整的字母数字字符串(这是唯一的ID),它就会失败,告诉我该列不存在。
例如:call sp_GetRecordID(123456,'tbl_justsaythanks',@id_Out);
将返回一个记录ID,就像我想要的那样。
但是,如果我从表中尝试一个真正的id,那就是一个字符串......
`call sp_GetRecordID('fc66d9a82ba717e0931462370e64baff','tbl_justsaythanks',@id_Out);`
我得到“错误代码:1054。'where子句'中的未知列'fc66d9a82ba717e0931462370e64baff'”
由于我是MySQL的新手,我不确定我在哪里 - 我怀疑它与查询中的刻度标记应用有关,但是我看不到它此刻。
所以,非常感谢任何以正确方式指出我的帮助。
答案 0 :(得分:0)
尝试如下存储过程:
long total_bytes_written_to_outfile = ftell(outfile);
// correct chunk_size and subchunk2_size just before closing outfile:
fseek(outfile, 0, SEEK_SET);
int size = total_bytes_written_to_outfile - sizeof(*meta);
meta->chunk_size = sizeof(header) - sizeof(meta->chunk_id) - sizeof(meta->chunk_size) + size;
meta->subchunk2_size = size;
fwrite(meta, 1, sizeof(*meta), outfile);
fclose(outfile);
请参阅db-fiddle示例。