前提・実現したいこと
コマンドプロンプトでSQL*Plusを起動し、sqlファイルを実行することでデータベースの操作を行っています。
以下手順の3の添削をお願いします。(1,2は動作確認済)
1 テーブルを作成後、作成テーブルを元に別テーブルを作成
2 作成したテーブルの内、1テーブルにデータをINSERTする
3 データ投入したテーブルからもう片方のテーブルへカーソルを使用し、データをINSERTする
※③ではDECLARE文を使用せず、CREATE OR REPLACE PROCEDURE又はCREATE OR REPLACE FUNCTIONを用いる
発生している問題・エラーメッセージ
3のファイルを実行時、以下のエラーが表示される 警告:プロシージャが作成されましたが、コンパイル・エラーがあります。
該当のソースコード
1 動作確認済 --テーブル1「onetable」を作成 CREATE TABLE onetable ( USER_ID VARCHAR2(10) NOT NULL, USER_NAME VARCHAR2(50), gender_f NUMBER(1,0) ) ; --テーブル1「onetable」を元にテーブル2「twotable」を作成 CREATE TABLE twotable AS SELECT * FROM onetable;
2 動作確認済 --②作成したテーブルの内、1テーブルにデータ投入(INSERT)したSQLファイルを作成 --テーブル1(onetable)にデータを投入する INSERT INTO onetable ( USER_ID, USER_NAME, gender_f )VALUES( '1234', 'testuser', 1 ); COMMIT;
PL/SQL
13 2/*③PROCEDUREを使用し、②でデータ投入したテーブル「onetable」から 3もう片方のテーブル「twotable」へカーソルを使用しデータを投入する。*/ 4 5--プロシージャ「testproc」を作成 6CREATE OR REPLACE PROCEDURE testproc(USER_ID in VARCHAR2,USER_NAME in VARCHAR2,gender_f in NUMBER) 7IS 8--カーソル「selcur」の宣言をする 9 CURSOR selcur IS 10 SELECT * FROM onetable; 11 12BEGIN 13--カーソルを開く 14 OPEN selcur; 15--1行ごとにデータを取り出す 16 FETCH selcur INTO USER_NAME,USER_ID,gender_f 17 INSERT INTO TABlE VALUES(USER_NAME,USER_ID,gender_f) 18--カーソルを閉じる 19CLOSE selcur; 20 21COMMIT; 22 23END; 24/
試したこと
コメントを参考に/の挿入、
CREATE OR REPLACE PROCEDURE testprocの後に(USER_ID in VARCHAR2,USER_NAME in VARCHAR2,gender_f in NUMBER)を追加しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。