把查询结果赋值到变量,大部分情况下使用游标来完成,但是如果明确知道查询结果只有一行(例如统计记录的数量,某个字段求和等),其实可以使用set或into的方式来实现赋值。示例代码:
drop table if exists test_tbl
create table test_tbl (name varchar(20), status int(2))
insert into test_tbl values('abc', 1),('edf', 2),('xyz', 3)
drop procedure IF EXISTS pro_test_3
delimiter //
create procedure pro_test_3()
begin
DECLARE cnt INT DEFAULT 0
select count(*) into cnt from test_tbl
select cnt
-- 多个列的情况下似乎只能用 into 方式
select max(status), avg(status) into @max, @avg from test_tbl
select @max, @avg
end
delimiter
call pro_test_3()
sprintf(query, "SELECT *FROM history WHERE serialnumber='%s' AND adtcode='%s' LIMIT 1", dataStr,modulename)if (!mysql_real_query(mysql, query, (unsigned long)strlen(query))) {
res = mysql_use_result(mysql)
numfields = mysql_field_count(mysql)
while (row=mysql_fetch_row(res)) {
fprintf(outfile, "\r\n")
lengths = mysql_fetch_lengths(res)
fields=mysql_fetch_fields(res)
for (i=0i<numfieldsi++) {
fprintf(outfile, "%.*s ", (int)lengths[i], row[i])
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)