여기에 문제가 있습니다. temprequest는 행을 가져 오는 테이블입니다. 가져 오는 동안 temprequest 테이블을 기반으로 제공 가능한 테이블의 deliverableId 열을 조회합니다. 그러므로 나는 select into 문을 사용한다. 하지만 look up 값을 넣는 변수는 가져온 첫 번째 행에 대해서만 작동합니다. 'select into'문이 커서가있는 mysql 저장 프로 시저에서 작동하지 않습니다.
는 '말을 시작'블록 :DECLARE no_more_rows BOOLEAN;
DECLARE nr_rows INT DEFAULT 0;
DECLARE loop_cntr INT DEFAULT 0;
declare delId int;
declare vtname varchar(200);
declare tversion varchar(200);
declare custId int;
declare prod varchar(200);
DECLARE c_temp CURSOR FOR select tname, version,BuID,BuprodName from temprequest;
SET no_more_rows = False;
OPEN c_temp;
select FOUND_ROWS() into nr_rows;
the_loop:LOOP
FETCH c_temp into vtname,tversion,custId, prod;
IF no_more_rows THEN
LEAVE the_loop;
END IF;
-- statements for each request record
Set delId= (SELECT deliverableId
FROM deliverable
WHERE deliverable.Product_prodName =vtname AND deliverable.version = tversion);
INSERT INTO request VALUES (delId, custId, prod);
SET loop_cntr = loop_cntr + 1;
END LOOP the_loop;
CLOSE c_temp;
가'no_more_rows'이 코드에서 사용되지 않습니다 ... 그것은해야하지 :'TRUE SET의 no_more_rows =를 찾을 수 없음위한 DECLARE 핸들러를 계속,'또는'no_more_rows = 경우 nr_rows = loop_cntrl 다음 TRUE 다른 FALSE ' ? – Stoleg
테이블에 읽을 행이 더 이상 없을 때 no_more_rows가 자동으로 false로 설정됩니다. – user2463263
실제로 문제는 'select into'문입니다. – user2463263