私はプロシージャ内にテンポラリテーブルを1つ作成し、そのプロシージャでそのテーブルを使用して、その 'SP'を実行した後で自動的にそのテーブルを削除したいのですが、どうすればいいですか?あなたがテーブルにテンポラリテーブルの作成
execute immediate 'drop table....
私はプロシージャ内にテンポラリテーブルを1つ作成し、そのプロシージャでそのテーブルを使用して、その 'SP'を実行した後で自動的にそのテーブルを削除したいのですが、どうすればいいですか?あなたがテーブルにテンポラリテーブルの作成
execute immediate 'drop table....
あなたは動的SQLすることができます
execute immediate 'create table my_table (/* cols here */)';
と終わり:また
execute immediate 'drop table my_table';
言及する価値がテーブルとして直接、一時テーブルを使用すると、コンパイル時に存在していない一方で、あなたはコードをコンパイルすることはできません。動的SQLを使用するには、それを使用する必要があります。
あなたをドロップすることができますが、同じ方法でそれらのすべてのすべての後、あなたのSTAF
を行うことができます次に
Execute immediate 'create table...'
動的SQLを使用することができます
私はなぜdownvoteしてくださいか分かりますか? – GurV
check dynamic sql? – GurV
このアプローチの代わりにグローバル一時テーブルを使用することをお勧めします。 GTT内のデータは、セッションに固有です。プロシージャの外部で一度だけテーブルを作成し、そのプロシージャで使用する必要があります。 https://oracle-base.com/articles/misc/temporary-tables –
2つのセッションが同時にプロシージャを実行する場合はどうなりますか?テーブルを作成しようとする前にテーブルが存在するかどうかを確認するコードがありますか?他のセッションがそれを使用している可能性がある場合は、どうやって削除できるかをどのように知ることができますか?また、 'delete'または' drop'を意味しますか? –