Oracle
是否可以在不創建儲存過程的情況下在 SQL 中進行循環?
我想在使用者定義的數據類型(ESRI 的版本)中遍歷 SHAPE/GEOMETRY 列中的頂點
ST_GEOMETRY
。我已在此處的 GIS SE 文章中發布了詳細資訊:將 sde.st_geometry M 值更新為累積距離(幾何長度)我認為這通常會在儲存過程中完成(可能與
sde.ST_GEOMETRY
函式ST_NumPoints
和結合使用ST_PointN
)。但是,我沒有CREATE PROCEDURE
權限,所以我無法創建儲存過程。作為創建儲存過程的替代方法,有沒有辦法使用 SQL 語句來循環遍歷頂點?
甲骨文 12c (12.1.0.2.0)
您可以將 pl/sql 放在匿名塊中。這樣的事情可能會有所幫助:
declare v_vertices your_user_defined_data_type; cursor your_cursor_c is select vertices from your_table where your_column = 'A VALUE'; begin open your_cursor_c; loop fetch your_cursor_c into v_vertices; exit when your_cursor_c%notfound; ST_NumPoints(v_vertices); ST_PointN(v_vertices); commit; end loop; end;
此外,對於 12c,您還可以執行一些內聯過程/函式。不確定是否有必要,但這裡有一個連結:https ://oracle-base.com/articles/12c/with-clause-enhancements-12cr1 。