2013-01-17 50 views
0

我這裏有磁帶的表3個字段:MySQL存儲過程,使用列名作爲參數

TapesID  Title  Qty 

    T1  BatDog   3 

    T2 UnderCat  2 

    T3 IronMouse  1 

    T4 Boys Zone  1 

    T5 RoboCat   1 

我想創建一個存儲過程,提取和顯示特定的ID的輸入磁帶標題作爲過程的參數。該過程應該被稱爲list_tspec_id。

ü可以幫助我即時通訊不好受這... ...

這裏是我的代碼,但它是不正確的:?

create procedure tapesid 
@columnname varchar 
AS 
begin 
select @columnname from tapes 
end 
exec tapesid 'title' 
+0

我還沒有嘗試過任何東西,我真的堅持這個人.. –

+0

有關使用[預處理語句(什麼http://dev.mysql.com /doc/refman/5.0/en/sql-syntax-prepared-statements.html)? – fiz

+0

應該是'選擇TapesID WHERE名稱= @ Title'其中@Title應該傳遞的參數 – codingbiz

回答

1

您已經標記了以此爲MySQL,使.. 。這裏是一個存儲過程,雖然從你的例子中不清楚你真的想要它做什麼或爲什麼。

傳遞到存儲過程作爲參數的變量沒有在他們面前使用「@」。

DELIMITER $$ 

CREATE PROCEDURE list_tspec_id (IN my_title VARCHAR(254)) 
BEGIN 

    SELECT TapesID, Title, Qty FROM Tapes WHERE Title = my_title; 

END $$ 
DELIMITER ; 

然後...

mysql> CALL list_tspec_id('BatDog'); 
+0

我跑它,但它沒有輸出.. 呼叫list_tspec_id(「BatDog」); 的mysql> 這是result..what應該是什麼問題? –

+0

每當我打電話時它只顯示 - >爲什麼這可能是? –

+0

請務必使用DELIMITER * space *分號重新設置分隔符...或控制-C打破MySQL連接並重新連接,如果你卡住了。 –

相關問題