私は pl/sql を学習しようとしていますが、現在、自分のコードで何が問題になっているのか理解できません。私がやろうとしているのは、特定のテーブルを動的にコピー (バックアップ) することです。とても簡単なことです。実際にはかなり頻繁に使用するため、backupTable を作成済みです。したがって、最初の試行は次のとおりです。
EXECUTE IMMEDIATE 'INSERT INTO '||sSchema_||'.backupTable
SELECT * FROM '||sSchema_||'.table'
列の1つにLONGデータ型が含まれているため、これは機能しません
Exception ORA-00997: illegal use of LONG datatype
したがって、次のステップでは、ループにパックして、各行を個別に取得しようとしました。
--Initialized as
TYPE cur_typ IS REF CURSOR;
cCursor cur_typ;
rRecord table%rowtype;
--Make sure cursor is closed
IF cCursor%ISOPEN THEN
CLOSE cCursor;
END IF;
--Run the copying
OPEN cCursor FOR 'SELECT * FROM '||sSchema_||'.table';
LOOP
FETCH cCursor INTO rRecord;
EXIT WHEN cCursor%NOTFOUND;
EXECUTE IMMEDIATE 'INSERT INTO '||sSchema_||'.updateTable 'VALUES rRecord';
END LOOP;
CLOSE cCursor;
次の理由で実行されていません。
ORA-03001: unimplemented feature
その後、他のさまざまな方法を使用してそのループを記述しようとしました。
EXECUTE IMMEDIATE 'INSERT INTO '||sSchema_||'.updateTable 'VALUES :1' USING rRecord;
すべて同じ結果: 実装されていない機能。
ここで質問があります: LONG データ型を含むテーブルの動的コピーを作成するにはどうすればよいですか? 誰にもアイデアはありますか?
事前にどうもありがとう
ドニー