【发布时间】:2017-04-06 10:29:51
【问题描述】:
我有一个名为“gps_coord”的程序。它需要两个参数并且必须返回记录。但我不知道我该怎么做。在此先感谢;)
CREATE OR REPLACE PROCEDURE gps_coord(v_x IN FLOAT,
v_y IN FLOAT, v_result out result_type)
IS
TYPE result_type IS RECORD(
v_km VARCHAR2(50),
v_objID VARCHAR2(50)
);
v_out result_type;
BEGIN
select P.KM , P.OBJECTID INTO v_out from SDE.POINTS p where sde.st_intersects(P.SHAPE,sde.st_buffer(sde.st_transform( sde.st_point(v_y,v_x,4326),32639) ,5000))=1;
dbms_output.put_line('km: ' || v_out.v_km || 'objid: ' || v_out.v_objID );
END;
【问题讨论】:
-
记录类型必须在过程外声明...
-
@ammoQ 是对的,在您的情况下,您有一个独立的过程,要使用记录类型作为参数,它必须在模式级别声明。
-
请看this问答。
-
同上...如果你把你的过程放在一个包中,你可以在包规范中声明记录类型。
-
对不起,有点错误,我记得不能是模式级别的记录,如上所述在包规范中声明或作为模式级别的对象类型。
标签: sql plsql procedure plsqldeveloper