DBMS_TYPES は、PL/SQL で一般的に使用される組み込みパッケージで、REF CURSOR やラージオブジェクト (LOB) などの動的型に関連する操作とデータ型定義を提供します。DBMS_TYPES パッケージを通じて、高度な PL/SQL データ型を簡単に処理でき、データベース開発の柔軟性と適応性を高めます。
前提条件
PolarDB for PostgreSQL (Oracle 互換) でサポートされているバージョンは次のとおりです。
Oracle 構文互換性 2.0 (マイナーエンジンバージョン 2.0.14.17.34.0 以降)
マイナーエンジンバージョンを表示するには、コンソールに移動してマイナーエンジンバージョンを確認するか、SHOW polardb_version; 文を使用します。マイナーエンジンバージョンの要件が満たされていない場合は、マイナーエンジンバージョンをアップグレードします。
メリット
動的処理型: 動的データ型 (動的カーソル REF CURSOR やラージオブジェクト
LOBなど) の機能サポートを提供し、PL/SQL の動的処理能力を大幅に向上させます。型定義と操作: このパッケージは、データ型の動作をより柔軟に制御できる組み込みの定数とサブタイプを提供します。
高度なデータ処理: 動的な結果セットの作成やクロスプラットフォームのデータ操作の実行など、複雑なデータ転送と動的クエリの構築を簡素化します。
注意
互換性:
DBMS_TYPESは PolarDB for PostgreSQL (Oracle 互換) の PL/SQL 組み込みパッケージであり、他のデータベースの標準実装に似ています。クエリとテーブル構造が PolarDB の使用仕様に準拠していることを確認してください。動的カーソル REF CURSOR: 動的カーソルを使用する場合は、型の不一致エラーを回避するために、クエリの結果セットの構造がカーソルの定義と一致していることを確認してください。
リファレンス
DBMS_TYPES は、PL/SQL プログラムにおける動的クエリと複雑なデータ型のサポートを強化する多数の定数と型を提供します。主要な要素を以下に示します。
定数
定数 | 説明 |
|
|
|
|
|
|
|
|
|
|
TYPECODE_BLOB と TYPECODE_CLOB 定数は、ラージオブジェクトを扱う際に特に便利で、他の組み込みパッケージ (たとえば DBMS_LOB) と組み合わせることで、強力な機能を実現できます。
子タイプ
子タイプ | 説明 |
| ストアドプロシージャからクエリ結果セットを動的に返すために使用される PL/SQL 動的カーソル型です。 |
例
次の例では、DBMS_TYPES.TYPECODE_BDOUBLE 定数を使用して変数の型を動的に決定します。
DECLARE
l_typecode PLS_INTEGER;
v_data ANYDATA := anydata.ConvertBDouble(null);
v_type ANYTYPE;
BEGIN
l_typecode := v_data.GETTYPE(v_type);
IF l_typecode = DBMS_TYPES.TYPECODE_BDOUBLE THEN
DBMS_OUTPUT.PUT_LINE('It is a double');
ELSE
DBMS_OUTPUT.PUT_LINE('It is not a double');
END IF;
END;結果:
It is a double