0
1)下面是我正在嘗試的代碼,我需要比較兩個不同表的計數。 (tbl1和tbl2在要傳遞的參數中)。 但在上面的代碼中,'a'和'b'的值被設置爲語句。我需要兩個語句的結果值(count)在'IF'條件下進行比較。比較兩個sql語句的結果的過程
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
@[email protected]
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
@[email protected]
then
select 1;
else
select 2;
end if;
希望有人在那裏可以幫我解決方案。
上面的代碼有什麼問題?它似乎是正確的... – 2013-05-01 10:44:59
你想做什麼?請多解釋一下。似乎你正在複雜的事情。 – 2013-05-01 10:45:50
1)爲什麼你有變量表名稱?這通常表示嚴重非規範化的模式。 2)這感覺就像商業邏輯 - 它真的屬於數據庫嗎? – eggyal 2013-05-01 10:46:45