1. 程式人生 > 資料庫 >Oracle資料庫中游標(cursor)的用法 / sdo_geometry資料型別的儲存

Oracle資料庫中游標(cursor)的用法 / sdo_geometry資料型別的儲存

Oracle資料庫定義遊標

  • 當我們在資料庫中想要將一個表中的資料按照行提取出來並且將每一個屬性值賦給另外的語句使用的時候,遊標可以看作儲存查詢表的一個臨時容器,要用的時候一行一行的取出來,並且可以將每一個屬性值賦給自己定義的變數,方便操作。
  • 以下程式碼首先定義了一個遊標,然後將node表中每一個點資料的id號和座標提取出來並且插入到新建的sdo_node表中(點存成sdo_geometry的資料型別),下面的表為node點表,第一列為點標號id,第二三四列分別為點的x, y, z座標。

在這裡插入圖片描述

-- 建立一個表來將點以sdo_geometry的形式儲存起來
create table sdo_node(
  node_ID varchar2(20),
  node_gemo sdo_geometry
);


-- 定義遊標
declare 
cursor c is select column1, column2, column3, column4 from node;
col1 varchar2(64);
col2 varchar2(64);
col3 varchar2(64);
col4 varchar2(64);

begin
open c ;
loop
    fetch c into col1, col2, col3, col4;
    exit when c%notfound;
    insert into sdo_node(node_ID, node_gemo) 
    values(col1, SDO_GEOMETRY(3001, null, 
      MDSYS.SDO_POINT_TYPE(to_number(col2), to_number(col3), to_number(col4)), NULL, NULL));
end loop;
close c;
end;
  • sdo_node表插入的結果為:
    sdo_node表
    當然遊標還有其他的型別,這裡只是我學習的過程中用到的一個,後面學習會再補充。