2014-02-26 23 views
0

所以我在我的表中有名爲store1,store2等的列。如果我打這個電話:嘗試傳遞列名作爲參數在mysql中

call storeinv(1); 

我想常規做:

select sum(store1) from inventory; 

我有一個很艱難的時期的方式,它不會被解釋通過列名作爲一個字符串。有沒有人知道這個解決方法?謝謝。這裏是我到目前爲止的代碼:

DELIMITER $$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `storeinv`(store int) 

BEGIN 
    prepare stmt1 from '(select sum(?) from inventory)'; 
    set @a = concat('store',store); 
    execute stmt1 using @a; 
END 
+0

如何發送整個查詢作爲過程參數,如: CREATE DEFINER ='root' @ localhost'程序'storeinv'(查詢VARCHAR(1024)) 並使用它,從'(query)'準備stmt1; – avisheks

+0

所以你的表中有名爲'store1''' store2'等的列? – 2014-02-26 19:26:07

+0

avisheks我不確定你的意思是使用查詢作爲參數。所以當我打電話給我的程序,我會call storeinv(select sum(store1) from inventory)? @VladimirOselsky是的,沒錯。該功能的目的是選擇給定列的總和 – user3357302

回答

0

我不認爲你可以做你想要什麼,但是,下面可能有助於假設有在商店列數了一些限制:

select sum(elt(?,store1,store2,store3,store4,store5...)) from inventory