1)下面是我正在尝试的代码,我需要比较两个不同表的计数。(tbl1 和 tbl2 在要传递的参数中)。但在上面的代码中,“a”和“b”的值被设置为语句。我需要两个语句的结果值(计数)在“IF”条件下进行比较。
declare a integer;
declare b integer;
set @a:=concat('select count(*) from ', tbl1);
/*PREPARE stmt1 FROM @a;
execute stmt1;
deallocate PREPARE stmt1;*/
set @b:= concat('select count(*) from ', tbl2);
/*PREPARE stmt2 FROM @b;
execute stmt2;
deallocate PREPARE stmt2;*/
if
@a=@b
then
select 1;
else
select 2;
end if;
2)实际上我在程序中将“tbl1”和“tbl2”设置为参数时遇到了问题。如果直接给出表名,则以下代码可以正常工作,但我需要它们作为参数。
CREATE PROCEDURE myproc (in tbl1 varchar(50), in tbl2 varchar(50))
declare a integer;
declare b integer;
set @a:=(select count(*) from tbl1);
/*PREPARE stmt1 FROM @a;
execute stmt1;
deallocate PREPARE stmt1;*/
set @b:= (select count(*) from tbl2);
/*PREPARE stmt2 FROM @b;
execute stmt2;
deallocate PREPARE stmt2;*/
if
@a=@b
then
select 1;
else
select 2;
end if;
希望那里的任何人都可以帮助我解决问题。