ArcGIS Desktop

  • ドキュメント
  • サポート

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ヘルプ

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • その他...

Next_RowID

  • 定義
  • 構文
  • 戻り値のタイプ
  • 例

定義

Next_RowID は、ジオデータベースに登録されたテーブルを入力パラメーターとして受け取り、次の ObjectID (RowID) フィールドの値を返します。

SQL を使用してテーブルに行を挿入する場合に、この値を使用できます。

指定したテーブルがジオデータベースに登録されていない場合、エラーが返されます。

構文

<geodatabase administrator schema>.next_rowid (<table owner>, <table name>)

ほとんどのジオデータベースでは、ジオデータベース管理者のスキーマは sde です。ただし、SQL Server の dbo スキーマ ジオデータベースの場合、このスキーマは dbo になり、Oracle 内のユーザー スキーマ ジオデータベースの場合、このスキーマはユーザーのスキーマ名になります。

戻り値のタイプ

整数

例

以下に、サポートされるそれぞれのデータベース タイプで Next_RowID 関数を使用する例を示します。

最初の例では、WEBMAN が所有する APPLICANTS テーブルにレコードを挿入し、Next_RowID プロシージャを呼び出して RowID (ObjectID) フィールドに値を挿入しています。DB2 と SQL Server の場合、まず Next_RowID プロシージャを呼び出して ObjectID フィールドの値を取得し、その値を INSERT ステートメントで使用する必要があります。

2 つめの例では、LOGINS テーブルにレコードを挿入し、Next_RowID プロシージャを呼び出して ID という名前のフィールドに値を挿入しようとしています。しかし、LOGONS テーブルがジオデータベースに登録されていないため、エラーが返されています。

DB2

DB2 の場合、ストアド プロシージャを INSERT ステートメントで直接は使用できません。そのため、Next_RowID プロシージャを呼び出して次の RowID の値を取得していから、その値を INSERT ステートメントで使用する必要があります。

CALL sde.next_rowid('WEBMAN', 'APPLICANTS', ?, ?, ?);

Value of output parameters
----------------------------
Parameter Name :   O_ROWID
Parameter Value :  30

Parameter Name :   O_MSGCODE
Parameter Value :  0

Parameter Name :   O_MESSAGE
Parameter Value :  Procedure successfully completed.

Return Status = 1


INSERT INTO webman.applicants (objectid, app_name, status)
VALUES
(30, 'Roy Bean', 'active')

The SQL command completed successfully

この例では、テーブルがジオデータベースに登録されていないため、ID の値は返されません。

CALL sde.next_rowid('WEBMAN', 'LOGINS', ?, ?, ?);

Value of output parameters
----------------------------
Parameter Name :   O_ROWID
Parameter Value :  -

Parameter Name :   O_MSGCODE
Parameter Value :  -20169

Parameter Name :   O_MESSAGE
Parameter Value :  No SDE ROWID column.

Return Status = 1

Oracle

INSERT INTO webman.applicants (objectid, app_name, status)
VALUES
(sde.gdb_util.next_rowid('WEBMAN', 'APPLICANTS'), 'Roy Bean', 'active');

1 row created

COMMIT;
INSERT INTO webman.logins (id, l_name)
VALUES 
(sde.gdb_util.next_rowid('WEBMAN', 'LOGINS'), 'maplebutter');


(sde.gdb_util.next_rowid('WEBMAN', 'LOGINS'), 'maplebutter');
 *
ERROR at line 3:
ORA-20220: Class WEBMAN.LOGINS not registered to the Geodatabase.

PostgreSQL

INSERT INTO webman.applicants (objectid, app_name, status)
VALUES
(sde.next_rowid('webman', 'applicants'), 'Roy Bean', 'active')

Query returned successfully: 1 row affected, 109 ms execution time.
INSERT INTO webman.logins (id, l_name)
VALUES 
(sde.next_rowid('WEBMAN', 'LOGINS'), 'maplebutter')

Notice: Class webman.logins not registered to the Geodatabase.

SQL Server

SQL Server で Next_RowID ストアド プロシージャを使用する場合、次の行 ID の値を取得し、レコードをテーブルに挿入するときにその値を挿入する必要があります。

DECLARE @myval int
EXEC sde.next_rowid 'mgr', 'customers', @myval OUTPUT
SELECT @myval "Next RowID";

Next RowID
3188
INSERT INTO webman.applicants (objectid, app_name, status)
VALUES
(3188, 'Roy Bean', 'active');

Query returned successfully: 1 row affected, 109 ms execution time.

ジオデータベースに登録されていないテーブルに対して Next_RowID プロシージャを実行しようとすると、以下の例に示すようなエラー メッセージが表示されます。

DECLARE @myval int;
EXEC sde.next_rowid 'mgr', 'inventory', @myval OUTPUT;
SELECT @myval "Next RowID"

Msg 50000, Level 16, State 1, Procedure next_rowid, Line 16
Class inventory not registered to the Geodatabase.

関連トピック

  • RowID_Name

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • スタッフ ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2017 Esri. | プライバシー | リーガル