2011-07-13 12 views
0

こんにちは呼び出し中:エラー私はMySQLでこのプロシージャを呼び出すとき、私はエラーを取得するMySQLのストアドプロシージャ

call delete_poll(1,0); 

手順:

DELIMITER $$ 

DROP PROCEDURE IF EXISTS `prj`.`delete_poll` $$ 
CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_poll`(IN b_id int,IN rowNumber int) 
BEGIN 
    declare I int; 
    PREPARE STMT FROM " select id into I from poll 
    where blog_id=b_id limit ?,1 "; 
    SET @start = rowNumber; 

    EXECUTE STMT USING @start; 

    delete from poll 
    where id=I; 
END $$ 

DELIMITER ; 

をエラー:

Undeclared variable: I

+1

'PREPARE STMT'行から' INTO I'部分を削除して何が起こるか見てみることができますか? mysqlが準備された文の中に私を認識できないことがあります。 – Mike

+0

私はこの部分を削除すると、 '' where句 ''の中の ''未知の列 'b_id'、 '' b_id''部分を削除するとエラーが出ます。エラーは出ません。私の手続きでは '= b_id'の部分です。 –

答えて

0

STMT」をdoesnのプロシージャ(クエリ)で宣言された変数を認識できません - 出力値を変数にプッシュする方法が見つかりません

しかし、なぜ私は準備されたstatmentを "prepared statment"(手順)で使用しているのでしょうか?

+0

私はそれを使用しました。なぜなら私は限界rowNumberを必要としていました。1 –

+0

パート2を見てください。(間に)http://orkus.wordpress.com/2010/06/29/variable-limit-statement-in-mysql/ ifあなたは0から1の間で "@i:= @ i - 1"を使います) – SergeS

関連する問題