MySQL存储过程,输入和输出参数不能与字符串输入一起使用

时间:2017-05-03 22:39:29

标签: mysql stored-procedures

我有一个带有两个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的新手,我不确定我在哪里 - 我怀疑它与查询中的刻度标记应用有关,但是我看不到它此刻。

所以,非常感谢任何以正确方式指出我的帮助。

1 个答案:

答案 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示例。