カテゴリ:

システム関数 (システム情報)

SYSTEM$STREAM_HAS_DATA

指定されたストリームに変更データキャプチャ(CDC)レコードが含まれているかどうかを示します。

構文

SYSTEM$STREAM_HAS_DATA('<stream_name>')

引数

ストリーム名

クエリするストリームの名前です。

  • データベースとスキーマ(名前が完全修飾されている場合)を含む、名前全体を一重引用符で囲む必要があります。つまり、 '<データベース>.<スキーマ>.<ストリーム名>'

  • ストリーム名で大文字と小文字が区別されるか、特殊文字やスペースが含まれる場合、大文字と小文字の処理には二重引用符が必要です。二重引用符は、一重引用符で囲む必要があります。例: '"<ストリーム名>"'

使用上の注意

  • この関数は、テーブルバージョンメタデータの差分(ストリームオフセットと現在のトランザクション時間の間)を実行して、ストリームに CDC レコードが含まれているかどうかを判断します。その期間中のテーブルの DML アクティビティが、挿入、オプションで更新、削除される同じ行セットで構成され、元のテーブル状態に戻った場合、ストリームに CDC レコードが含まれていない場合でも、この関数は TRUE 値を返す可能性があります。

create table MYTABLE1 (id int);

create table MYTABLE2(id int);

create stream MYSTREAM on table MYTABLE1;

insert into MYTABLE1 values (1);

-- returns true because the stream contains change tracking information
select system$stream_has_data('MYSTREAM');

+----------------------------------------+
| SYSTEM$STREAM_HAS_DATA('MYSTREAM')     |
|----------------------------------------|
| True                                   |
+----------------------------------------+

 -- consume the stream
begin;
insert into MYTABLE2 select id from MYSTREAM;
commit;

-- returns false because the stream was consumed
select system$stream_has_data('MYSTREAM');

+----------------------------------------+
| SYSTEM$STREAM_HAS_DATA('MYSTREAM')     |
|----------------------------------------|
| False                                  |
+----------------------------------------+