2013-01-17 52 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连接并重新连接,如果你卡住了。 –

相关问题