最終的な要件に応じて、 aPROCEDURE
または a のいずれかを使用できます。FUNCTION
手順で作業を完了できますが、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;
この手順の外でトランザクションをコミットする場合を除き、そこにもa をCOMMIT;
入れたいと思うかもしれませんROLLBACK;
。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
それが役に立てば幸い...