をする必要がありますあなたの場合は
。
手順を実行するとジョブが完了しますが、挿入したレコードの数を確認するにはMAYA
テーブルを照会する必要があります。
すなわち
CREATE OR REPLACE
PROCEDURE maya_insert
IS
BEGIN
-- Truncate the maya table
EXECUTE IMMEDIATE 'TRUNCATE TABLE MY_SCHEME.MAYA';
--
-- Insert records into maya
INSERT INTO MY_SCHEME.MAYA
(
ID_TEST,
IQ,
DATE_,
COMMENT1
)
SELECT ID_TEST,
IQ,
DATE_,
COMMENT1
FROM MY_SCHEME.STAGE_MAYA
WHERE STAGE_MAYA.ID_TEST = (SELECT MAX(ID_TEST)
FROM MY_SCHEME.STAGE_MAYA);
EXCEPTION
WHEN others
THEN
DBMS_OUTPUT.put_line('MAYA_INSERT error: '||sqlerrm);
END maya_insert;
あなたはCOMMIT;
が、その後も例外セクションでROLLBACK;
を追加する追加しない場合は、この手順の外のトランザクションのコミットされていない限り、あまりにもそこにCOMMIT;
を置きたいと思うことがあります。 TRUNCATE
ステートメントをDDL
としてロールバックできないことに注意してください。ロールバックする機能が必要な場合は、遅いDELETE
コマンド(DML
)を使用する必要があります。
あなたはMAYA
に挿入されたレコード数を知るために必要な場合、この関数を使用します。
CREATE OR REPLACE
FUNCTION maya_insert
RETURN NUMBER
IS
BEGIN
-- Truncate the maya table
EXECUTE IMMEDIATE 'TRUNCATE TABLE MY_SCHEME.MAYA';
--
-- Insert records into maya
INSERT INTO MY_SCHEME.MAYA
(
ID_TEST,
IQ,
DATE_,
COMMENT1
)
SELECT ID_TEST,
IQ,
DATE_,
COMMENT1
FROM MY_SCHEME.STAGE_MAYA
WHERE STAGE_MAYA.ID_TEST = (SELECT MAX(ID_TEST)
FROM MY_SCHEME.STAGE_MAYA);
-- Return the number of records inserted
RETURN SQL%ROWCOUNT;
EXCEPTION
WHEN others
THEN
DBMS_OUTPUT.put_line('MAYA_INSERT error: '||sqlerrm);
RETURN -1;
END maya_insert;
すなわち
をここでは、挿入されたレコードの数を取得し、エラーがあなたがしてあった場合-1
が返されます。あなたがそれらを必要とする場合は、COMMIT;
とROLLBACK;
のコメントが追加されています。
パッケージに関して。パッケージは、論理的に関連する関数プロシージャとその他の処理をデータベース内でグループ化するために使用されます。プロシージャまたは関数が1つしかないので、この段階でパッケージにラップする必要はありません。 を参照してください:http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/09_packs.htm#362
はそれが役に立てば幸い...
はPROCEDURE MAY12_PROCがあなたのTRUNCATE文の前に '」EXECUTE IMMEDIATEをBEGIN IS CREATE OR REPLACE'置きます。 'MAYA'と'; 'の間に' 'TRUNCATE'文の最後に' 'を入れてください。 'を追加します。 DBMS_OUTPUT.PUT_LINE( 'エラー:' || SQLCODE || '' || SQLERRM);それ以外の場合は例外です。 END MAY12_PROC; '最後の行の後。 –
と記載されている。私はあなたが ";"という構文エラーを "修正"したのが好きです。 –