[前][次][番号順一覧][スレッド一覧]

mysql:15383

From: こんにちは伊藤です <こんにちは伊藤です <ito.takahiro.cp@xxxxxxxxxx>>
Date: Tue, 24 Aug 2010 15:37:06 +0900
Subject: [mysql 15383] Re: カーソルのネストについて

伊藤です

とりあえず、別方法でいきます。
ネストを使わず、出来そうな感じもしてます。

TO:ひらつかさん
> ・DECLAREは最初に全部書くこと
[お返事]
これがわかっていませんでした。
ありがとうございました。<(_ _)>



On Tue, 24 Aug 2010 15:20:21 +0900
HIRATSUKA Sadao <hiratsuka.sadao@xxxxxxxxxx> 様から以下のようなメールをいただきました。。:

> ひらつかです。
> 
> On Mon, 23 Aug 2010 21:13:26 +0900
> こんにちは伊藤です <ito.takahiro.cp@xxxxxxxxxx> wrote:
> 
> > 初歩的な質問かも知れませんが、MySQLのストアドの中で
> > カーソルを利用する場合、カーソルのネストは出来ないものでしょうか?
> 
> カーソルのネストは一応できます。
> 
> ポイントは
> ・DECLAREは最初に全部書くこと
> ・HANDLERは一つしかないので自前でフラグ管理をすること
> です。
> 
> 
> > DECLARE CURS_B CURSOR FOR SELECT * FROM TBL_B WHERE この条件が動的
> 
> この「動的」具合が問題で、
> パラメータのバインド値を変更することはできますが、
> 文字列処理をしてWHERE句を組み立てて使う方法は見つかりませんでした。
> 
> 
> DELIMITER //
> CREATE PROCEDURE test1()
> BEGIN
>   DECLARE not_found INT DEFAULT 0;
>   DECLARE v_deptno INT;
>   DECLARE v_dname VARCHAR(14);
>   DECLARE cur1 CURSOR FOR SELECT deptno FROM emp ORDER BY empno;
>   DECLARE cur2 CURSOR FOR SELECT dname FROM dept WHERE deptno = v_deptno;
>   DECLARE CONTINUE HANDLER FOR NOT FOUND SET not_found = 1;
>   
>   OPEN cur1;
>   loop1: LOOP
>     FETCH cur1 INTO v_deptno;
>     IF not_found THEN
>       CLOSE cur1;
>       LEAVE loop1;
>     END IF;
>     
>     OPEN cur2;
>     loop2: LOOP
>       FETCH cur2 INTO v_dname;
>       IF not_found THEN
>         SET not_found = 0; ← フラグを戻す
>         CLOSE cur2;
>         LEAVE loop2;
>       END IF;
>       INSERT INTO work (dname) VALUES (v_dname);
>     END LOOP;
>   END LOOP;
> END
> //
> DELIMITER ;
> 
> 
> よろしくお願いします。
> 
> -- 
> 平塚貞夫 hiratsuka.sadao@xxxxxxxxxx
> 
> 




-------------------------------------------------
伊藤崇洋
ito.takahiro.cp@xxxxxxxxxx
-------------------------------------------------


[前][次][番号順一覧][スレッド一覧]

     15380 2010-08-23 21:13 [こんにちは伊藤です <] カーソルのネストについて                
     15382 2010-08-24 15:20 ┗[HIRATSUKA Sadao <hir]                                       
->   15383 2010-08-24 15:37  ┗[こんにちは伊藤です <]