2012-05-11 3 views
0

MYSQL에서 저장 프로 시저를 작성하는 방법을 배우기 시작했고로드 블록을 쳤습니다. mysql 저장 프로 시저의 레코드 표시

나는 다음과 같은 코드를 작성 :

DELIMITER $$ 
DROP PROCEDURE IF EXISTS `emscribedx`.`countcodes` $$ 
CREATE PROCEDURE `emscribedx`.`countcodes`() 
BEGIN 
declare doneprocessing int default 0; 
declare thisaccount varchar(50); 
declare countcursor cursor for select acct from patientid where patienttype='P'; 
declare continue handler for not found 
set doneprocessing = 1; 
Fetch countcursor into thisaccount; 
Repeat 
select * from doc_table where acct = thisaccount; 
until doneprocessing = 1 
END repeat; 
close countcursor; 
END $$ 

DELIMITER ; 

내가 반복 문 다음에 발생하는 select 문의 결과를 표시하고 싶습니다. 그러나 나는 그것을 어떻게합니까? 저장 프로 시저를 실행할 때 아무 일도 일어나지 않습니까?

은 왜 안 대신를 사용

엘리엇

답변

0

단일 쿼리의 결과를 반환 할 수있는 절차, 감사?

SELECT doc_table.* 
FROM doc_table 
INNER JOIN patientid 
ON patientid.acct = doc_tableacct 
WHERE patientid.patienttype='P'; 

원하는 경우 프로 시저 안에 넣을 수 있습니다.

+0

이것은 장난감 절차 일뿐입니다. 나는 이걸로 발을 젖게하기 위해서 이것으로 실험하고있다. 나는이 결과를 어떻게 반환할지 알고 싶다. – Elliott

+0

프로 시저에 단일 SELECT 문이 포함되어 있으면 쿼리 결과가 호출 될 때이를 반환합니다. 두 개 이상의'SELECT'가 포함되어 있다면, 첫 번째 것을 반환 할 것입니다 (잘못하지 않았다면). – bfavaretto

+0

@bfavaretto : 그건 완전히 정확하지 않습니다. MySQL은 저장 프로 시저 내에서 실행 된 모든 명령문의 결과를 반환하지만 클라이언트는 그러한 다중 결과 집합을 읽는 것을 지원하지 않을 수 있습니다. 예를 들어, PDO에서는 ['PDOStatement :: nextRowset'] (http : //www.php .net/manual/ko/pdostatement.nextrowset.php)를 사용하여 이들 사이를 이동하십시오. – eggyal