2011-02-10 4 views
2

テーブル「accounts」のすべての列名を処理します。 スタックオーバーフローでこのストアドプロシージャが見つかりましたが、期待どおりに機能していません。私はエラーを取得していますカーソルが開いていないエラー

delimiter $ 

create procedure prc_column() 
BEGIN 
DECLARE num_rows int; 
declare i int; 
declare col_name varchar(1000); 

DECLARE col_names CURSOR FOR 
    SELECT column_name 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'accounts' 
    ORDER BY ordinal_position; 


select FOUND_ROWS() into num_rows; 

SET i = 1; 
the_loop: LOOP 

    IF i > num_rows THEN 
     CLOSE col_names; 
     LEAVE the_loop; 
    END IF; 


    FETCH col_names 
    INTO col_name;  

// do something with column names for e.g. append it with _drupal 

    SET i = i + 1; 
END LOOP the_loop; 

END 

ERROR 1326(24000):カーソルが

+0

はそれが可能になる前に開いているカーソルを宣言することを忘れているようですprc_column(accounts)のようなプロシージャにテーブル名を供給しますか? – shantanuo

答えて

5

を開いていないあなたは、ループ

open col_names; 
the_loop: LOOP 
... 
関連する問題