0
DROP PROCEDURE IF EXISTS Cursor_Test;# MySQL returned an empty result set (i.e. zero rows).

DELIMITER $$

CREATE PROCEDURE Cursor_Test()
BEGIN

  DECLARE Project_Number_val VARCHAR( 255 );
  DECLARE Project_List_val VARCHAR(255);



  DECLARE no_more_rows BOOLEAN;
  DECLARE loop_cntr INT DEFAULT 0;
  DECLARE num_rows INT DEFAULT 0;


  DECLARE projects_cur CURSOR FOR
    SELECT Project_Id
    FROM Project_Details;


  DECLARE CONTINUE HANDLER FOR NOT FOUND
    SET no_more_rows = TRUE;


  OPEN projects_cur;
  select FOUND_ROWS() into num_rows;

  the_loop: LOOP

    FETCH  projects_cur
    INTO   Project_Number_val;


    IF no_more_rows THEN
        CLOSE projects_cur;
        LEAVE the_loop;
    END IF;

SET Project_List_val=CONCAT(`Project_Number_val`,'_List')

-

> ---> **Please check am I doing CONCAT correct here?**


Insert Into test (Panel_Id) select Panel_Id from Project_List_val where Project_Number_val='9';  

> --->**Is this taking 9_List as table name?**


    SET loop_cntr = loop_cntr + 1;
  END LOOP the_loop;


  select num_rows, loop_cntr;


END $$# MySQL returned an empty result set (i.e. zero rows).


DELIMITER 

助言がありますか?こんにちは、みんな、

Project_Number という名前のストアド プロシージャに変数があり、varchar 型です。

私の要件は、「プロジェクト番号クエリごとに、テーブル project_Number_List がリストから結果を取得し、他のテーブルに挿入する」ことです

たとえば、Project_Number はこの 22,21,34,43,434 のようになる可能性があり、照会する必要がある対応するテーブルは、この 22_List、21_List、34_List のようなものです .....

Project_Number をループするためにカーソルを使用していますが、私の問題は、project_number と _list を混合する方法です。

4

3 に答える 3

7

これを試してください:

SET Project_List_val=CONCAT(Project_Number_val,'_List')
于 2013-02-12T08:16:55.377 に答える
4
SET Project_List_val=CONCAT(Project_Number_val,'_List');

一重引用符 For Project_Number_val vairable を入れないでください。

于 2013-02-12T08:20:31.233 に答える
2

あなたの var 呼び出しが間違っています。これを試してください:

 SET Project_List_val = CONCAT(Project_Number_val,'_List')
于 2013-02-12T08:18:01.777 に答える