2014-07-01 3 views
0

참조 커서절차에 OUT 매개 변수로 사용하고 있습니다. 한 행에 150 열 만 반환합니다.동일한 참조 커서가있는 다중 루프

매개 변수로 여러 함수에서 같은 커서를 사용하고 싶습니다. 그러나 첫 번째 함수 만 사용하려고하면 성공적으로 작동합니다.

첫 번째 기능에서는 위의 proc, 동적 열 이름의 참조 커서 을 전달하고 해당 열 값을 OUT 매개 변수로 가져옵니다. 첫 번째 함수에서 루프를 사용하여 열 값을 가져오고 여기에서 참조 커서를 닫지 않습니다. 두 번째 함수에서

는 I 먼저 함수에서, 및 열 값 (업데이트 목적위한 ) 파라미터 기둥 이름 IN 와 동일한 REF 커서을 전달하고있다. 나는 또한 여기에 루프를 사용하고있다. 하지만 그 커서는 여기 루프에 들어 가지 않습니다.

루프 내부의 업데이트 문이 작동하지 않습니다. 참조 커서를 아무 데나 닫을 수는 없지만 그 이유는 모르겠습니다. 눈에 띄는 아이디어.

패키지로 만든 모든 객체와이 객체를 하나의 트랜잭션으로 차례로 호출합니다.

Function GetPersNameId (pinClientId person.client_id%type, 
         pupNameId person.nameid%type, 
         pupRC in out pls_integer) 
return boolean; 

Function GetOrgnNameId (pinClientId organization.client_id%type, 
         pupNameId organization.client_id%type, 
         pupRC in out pls_integer) 
return boolean; 

Function GetEitherNameId (pinClientId person.client_id%type, 
          pupNameId person.nameid%type, 
          pupRC in out pls_integer) 
return boolean; 

Procedure ResolveNameId(pinStartIntfKey number, 
         pinEndIntfKey number, 
         pupRC in out pls_integer); 
+0

"pupRC"는 어디서나 'pls_integer'이므로 "ref 커서"에 dbms_sql을 사용한다고 가정합니다. 내가 맞습니까? – nop77svk

답변

0

의 Ref 커서가 다시 읽으려면, 다시 재개해야 "단방향 콜렉션"입니다.

  1. 각 읽기 전에 심판 커서를 다시 엽니 다 :

    당신은 두 가지 옵션이 있습니다.

  2. 레코드의 레코드/콜렉션에 참조 커서를 가져오고 그 위치에서 참조 커서를 전달하는 대신 후속 호출에 레코드/콜렉션을 전달하십시오.