こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数行をINSERTで『ORA-00911: 文字が無効です。』というエラーが出てしまいます。

SQL初心者です。
CommonSQLEnvironmentを使用して複数行のデータを登録したいのですが、

******************************************
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1');
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1');
******************************************

この状態で実行すると、『ORA-00911: 文字が無効です。』と出ます。
セミコロン(;)を抜いて

******************************************
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1')
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1')
******************************************

を実行すると『ORA-00933: SQLコマンドが正しく終了されていません。』と出ます。

ちなみに1行のみ実行で

******************************************
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1')
******************************************

は成功します。
また、

******************************************
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG)
VALUES
('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1'),
('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1');
******************************************

というものも試してみましたが駄目でした。
CommonSQLEnvironmentでの複数行追加の良い方法がありましたら教えて頂ければ幸いです。
宜しくお願い致します。

投稿日時 - 2008-07-16 17:49:04

QNo.4181373

困ってます

質問者が選んだベストアンサー

このツールは使ったことがなかったのですが、こんな感じで出来そうです。

1.テキストエディタを開いて各INSERT文(末尾にセミコロンあり)を書いて、ファイル名を
  data.sql(名前は適当)として保存します。

==== data.sqlの内容 ====
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('001', 'ヤマダタロウ', '山田太郎',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1');
INSERT INTO KAIIN_MST (NO, FNAME, NAME, YMD, FLG) VALUES ('002', 'ヤマダハナコ', '山田花子',TO_CHAR(SYSDATE, 'YYYYMMDD'), '1');
========================

2.Common SQL Environmentで「データベース」→「SQLスクリプト実行」を選び、
  上記で作成した「data.sql」を選択する(画面下のボタンでも可)

3.コミットする。

投稿日時 - 2008-07-16 18:57:47

お礼

教えていただいた方法で成功しました!ありがとうございます。
また、そのときに出たメッセージから、根本的な問題解決にも繋がりました。
一括実行をしていない事が問題だったみたいです。
その後、直接スクリプトをCommon SQL Environmentに書き込んだ状態で、「一括実行」を行ったら成功しました。
やはり初歩的な問題だったようです;;;

ありがとうございました!

投稿日時 - 2008-07-17 14:16:10

ANo.1

このQ&Aは役に立ちましたか?

10人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

おそらくWindowsで実行されていると思いますが、以下の各点をご確認下さい。
・日本語文字を使わなければ、挿入が成功しますか
・SQL文の文字コードは何ですか
・SQL文の文字コードに合わせて、CommonSQLEnvironmentを実行されているマシンの環境変数NLS_LANGを適切に設定されていますか

投稿日時 - 2008-07-16 21:20:29

お礼

問題解決しました。今回の問題は文字コードとは関係なかったようですが、文字コードの問題で上手くいかない場合もあるんですね。
参考になります。
ありがとうございました。

投稿日時 - 2008-07-17 14:14:09