在 DB2 中使用 SQL 编辑非版本化的地理数据库数据

如果数据不参与地理数据库行为,则可在地理数据库中使用 SQL 更新数据、将数据插入非版本化表或从其中删除数据。有关无法使用 SQL 编辑的数据类型和地理数据库行为类型的详细信息,请参阅可使用 SQL 编辑何种数据类型?

注注:

如果要使用 SQL 编辑的非版本化表已可用于存档,则必须编辑表存档视图而不是表本身。该视图将自动更新某些 ArcGIS 维护的字段。有关详细信息,请参阅什么是存档视图及其相关主题。

已注册到地理数据库的所有数据都具有由系统维护的唯一非空 ObjectID(行 ID)字段。在地理数据库中使用 SQL 将记录插入非版本化表时,必须为 ObjectID 提供唯一的值。可以使用 Next_RowID 存储过程通过 SQL 将值插入到 ObjectID 字段。

这组说明介绍如何在非版本化表中每次更新一行以及如何插入一个 ObjectID。您很可能要编写例程或客户端程序来检索 ObjectID 和更新数据。

步骤:
  1. 从 SQL 编辑器(例如 DB2 Call Level Interface)登录到数据库。

    请确保以拥有数据编辑权限的用户身份登录到数据库。

  2. 执行与以下类似的 SQL 语句来调用 Next_RowID 存储过程。

    Next_RowID 存储过程获取表所有者和表名作为输入,并返回表的下一 ObjectID。

    在此例中,GIS 为表所有者,FACTORIES 为表名,三个问号分别表示返回的三个参数:ROWID、MSGCODE 和 MESSAGE。

    CALL SDE.next_rowid('GIS','FACTORIES',?,?,?)
    Value of output parameters
    -----------------------------
    
    Parameter Name : O_ROWID
    Parameter Value : 18
    
    Parameter Name : O_MSGCODE
    Parameter Value : 0
    
    Parameter Name : O_MESSAGE
    Parameter Value : Procedure successfully
    completed.
    
    Return Status = 1
    
  3. 使用从上一调用语句返回的 O_ROWID 值将记录插入表中。
    INSERT INTO FACTORIES
    (OBJECTID,NAME,SHAPE)
    VALUES(
    18,
    'megafactory',
    db2gse.ST_PolyFromText('POLYGON( ( 50 31, 54 31, 54 29, 50 29, 50 31) )',
    db2gse.coordref()..srid(4326))
    );
    
  4. 可继续编辑,如果完成编辑则将编辑内容提交到数据库。

如果该表还包含 GUID 或全局 ID 字段,则还必须为此字段提供一个唯一的值。有关详细信息,请参阅 Next_GlobalID

相关主题

5/25/2014