배열을 PL/SQL 패키지 함수에 전달 중입니다. IN 절이있는 함수 내에서이 배열을 쿼리에 사용하려면이 작업을 수행하고 있습니다.오라클 함수에 배열 전달
같은 패키지 내 선언은 보인다 : 나는 익명 블록에서 실행하면 동일한 쿼리가 잘 실행
select a.id, a.geom from Table_FIELD a where a.id in (select * from table (in_feature_ids)) and sdo_filter(A.GEOM,mdsys.sdo_geometry(2003,4326,NULL,mdsys.sdo_elem_info_array(1,1003,3), mdsys.sdo_ordinate_array(0,57,2.8,59)),'querytype= window') ='TRUE'
을 다음과 같이 쿼리를 발사하고 내 PL/SQL 기능에서
create or replace
PACKAGE selected_pkg IS
TYPE NUM_ARRAY IS TABLE OF NUMBER;
FUNCTION get_selected_kml(
in_layer IN NUMBER,
in_id IN NUMBER,
in_feature_ids IN selected_pkg.NUM_ARRAY,
in_lx IN NUMBER,
in_ly IN NUMBER,
in_ux IN NUMBER,
in_uy IN NUMBER
)
RETURN CLOB;
END selected_pkg;
like
CREATE TYPE num_arr1 IS TABLE OF NUMBER;
declare
myarray num_arr1 := num_arr1(23466,13396,14596);
BEGIN
FOR i IN (select a.id, a.geom from Table_FIELD a where a.id in (select * from table (myarray)) and sdo_filter(A.GEOM,mdsys.sdo_geometry(2003,4326,NULL,mdsys.sdo_elem_info_array(1,1003,3), mdsys.sdo_ordinate_array(0,57,2.8,59)),'querytype= window') ='TRUE'
loop
dbms_output.put_line(i.id);
end loop;
end;
아래와 같이 함수를 호출하여 실행하려고하면
--Running function from passing array for IDs
declare
result CLOB;
myarray selected_pkg.num_array := selected_pkg.num_array(23466,13396,14596);
begin
result:=SELECTED_PKG.get_selected_kml(3, 19, myarray, 0.0,57.0,2.8,59);
end;
나는 오류가 점점 오전
ORA-00904: "IN_FEATURE_IDS": invalid identifier
은 누군가가 나 그것의 원인을 이해하는 데 도움이 시겠어요? 는 SQL 엔진이 인식하지 않는
덕분에, 앨런
Alex, 예 위의 질문에서 수정되었습니다 (복사 붙여 넣기에서 오류가 발생했습니다). 그러나 나는 그것을 올바르게 달리고있다. – AlanShar