SET PASSTHRU ステートメント
SET PASSTHRU ステートメントは、データ・ソースのネイティブ SQL を、 直接そのデータ・ソースに送信するセッションをオープンおよびクローズします。
このステートメントは、トランザクションの制御下にはありません。
呼び出し
このステートメントは、対話式に発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。
許可
このステートメントの許可 ID が持つ特権には、以下の事柄を行う許可がなければなりません。
- データ・ソースにパススルーする
- データ・ソースでのセキュリティーの制限を満たす
構文
説明
- server-name
- パススルー・セッションをオープンするデータ・ソースを指定します。 server-name (サーバー名) は、 カタログに記述されているデータ・ソースを指定していなければなりません。
- RESET
- パススルー・セッションをクローズします。
注
- Microsoft SQL Server、 Sybase、および Oracle のデータ・ソースには、以下の制限が適用されます。
- ユーザー定義トランザクションは、パススルー・モードの Microsoft SQL Server および Sybase データ・ソースには使用できません。これは、 Microsoft SQL Server および Sybase により、ユーザー定義トランザクション内で指定できる SQL ステートメントが制限されるためです。 パススルー・モードで処理される SQL ステートメントはデータベース・マネージャーによって構文解析されないので、ユーザーが指定した SQL ステートメントがユーザー定義のトランザクションで使用できるかどうかを検出できません。
- COMPUTE 節は、 Microsoft SQL Server および Sybase データ・ソースではサポートされていません。
- DDL ステートメントは、 Microsoft SQL Server、 Oracle 、および Sybase データ・ソース上のトランザクション・セマンティクスの対象ではありません。 操作が完了すると、 Microsoft SQL Server、 Oracle 、または Sybaseによって自動的にコミットされます。 ロールバックが起きても、DDL はロールバックされません。
例
- 例 1: データ・ソース BACKEND に対するパススルー・セッションを開始します。
strcpy (PASS_THRU,"SET PASSTHRU BACKEND"); EXEC SQL EXECUTE IMMEDIATE :PASS_THRU;
- 例 2: PREPARE ステートメントを使ってパススルー・セッションを開始します。
strcpy (PASS_THRU,"SET PASSTHRU BACKEND"); EXEC SQL PREPARE STMT FROM :PASS_THRU; EXEC SQL EXECUTE STMT;
- 例 3: パススルー・セッション終了します。
strcpy (PASS_THRU_RESET,"SET PASSTHRU RESET"); EXEC SQL EXECUTE IMMEDIATE :PASS_THRU_RESET;
- 例 4: PREPARE および EXECUTE ステートメントを使って、
パススルー・セッションを終了します。
strcpy (PASS_THRU_RESET,"SET PASSTHRU RESET"); EXEC SQL PREPARE STMT FROM :PASS_THRU_RESET; EXEC SQL EXECUTE STMT;
- 例 5: データ・ソースに移動するセッションをオープンし、
このデータ・ソースにある表のクラスター索引を作成し、
それからパススルー・セッションを終了します。
strcpy (PASS_THRU,"SET PASSTHRU BACKEND"); EXEC SQL EXECUTE IMMEDIATE :PASS_THRU; EXEC SQL PREPARE STMT pass-through mode FROM "CREATE UNIQUE CLUSTERED INDEX TABLE_INDEX ON USER2.TABLE table is not an WITH IGNORE DUP KEY"; alias EXEC SQL EXECUTE STMT; strcpy (PASS_THRU_RESET,"SET PASSTHRU RESET"); EXEC SQL EXECUTE IMMEDIATE :PASS_THRU_RESET;