인수 중 하나 인 pl/sql 객체의 VARRAY 인수를 취하는 함수가 있습니다. 어떻게이 저장 프로 시저를 실행하고 결과 집합을 Oracle 용 TOAD의 데이터 그리드에 바인드합니까?TOAD에서 Oracle 용 함수를 실행하고 결과를 데이터 격자에 바인딩하는 방법
4
A
답변
9
주위를 검색 한 후 내 자신의 문제에 대한 답변을 발견했습니다. varray 유형이 varchar_pair_array이고이 배열에 저장된 객체가 varchar_pair_object 였다고합시다. varchar_pair_object는 구성원으로 두 개의 varchar가있는 간단한 개체입니다. TOAD의 SQL 편집기에서이 코드를 붙여 함수에 적응하기 위해 변경 및 유형과 공격
DECLARE
RetVal SYS_REFCURSOR;
a_simplevalue VARCHAR2(200);
another_simplevalue VARCHAR2(200);
my_array_of_varchar_pairs VARCHAR_PAIR_ARRAY; -- assume varchar_pair_array is defined somewhere else
my_obj VARCHAR_PAIR_OBJECT; -- assume varchar_pair_object is defined somewhere else
my_other_obj VARCHAR_PAIR_OBJECT;
BEGIN
a_simplevalue := 'hello';
another_simplevalue := 'there';
my_obj := VARCHAR_PAIR_OBJECT('nice to meet you', 'greetings');
my_other_obj := VARCHAR_PAIR_OBJECT('goodbye', 'ciao');
my_array_of_varchar_pairs := VARCHAR_PAIR_ARRAY();
my_array_of_varchar_pairs.EXTEND(2); -- this should be the number of objects you plan to put into the array
my_array_of_varchar_pairs(1) := my_obj;
my_array_of_varchar_pairs(2) := my_other_obj;
RetVal := my_function (a_simplevalue, another_simplevalue, my_array_of_varchar_pairs); -- assuming your array takes two varchars and one array of VARCHAR_PAIR_OBJECT (s)
:to_grid := RetVal;
END;
복사 : 여기
는 varchar_pair_object (들)의 VARRAY에 걸리는 시저를 실행하기위한 코드입니다 F9. TOAD는 to_grid 변수의 유형을 묻습니다. 커서를 선택하고 (함수가 참조 커서를 반환한다고 가정) Enter 키를 누릅니다. TOAD는 결과 집합을 데이터 격자에 바인딩합니다. 나에게 도움이링크 : http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/10_objs.htm#1972
이http://www.smart-soft.co.uk/Oracle/oracle-plsql-tutorial-part-11.htm (컬렉션에 대한 좋은 튜토리얼)을 수행 할 수 있습니다 같은 아주 작은 변화로
(이 경우에 특히 유용는 선언하고 객체를 초기화하는 섹션입니다) 프로 시저로.
또한 스키마 브라우저에서 "프로 시저 실행"기능을 살펴보십시오. 실행 후 그리드에 참조 커서 결과를로드하는 옵션이 있습니다. 또한 마지막으로 프로 시저를 실행했을 때 사용한 매개 변수를 기억한다는 장점이 있습니다. –
거기에 문제가 VARRAY 및 개체와 같은 복잡한 형식으로 복잡한 형식에 대한 sql 생성하지 않습니다 (그리고 수 없습니다?) 자신의 초기화에 있습니다. – neesh
사실, 그렇기 때문에 실행하기 전에 코드를 편집 할 수 있습니다. :) –