• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Oracle SQL*Plus Dateタイプのinsertでエラー)

Oracle SQL*Plus Dateタイプのinsertでエラー

chaffの回答

  • ベストアンサー
  • chaff
  • ベストアンサー率30% (264/874)
回答No.1

Fireworksさん こんちは ご自宅のORACLEの NLS_DATE_FORMAT はどうなっていますか? 初期化パラメタに設定されているはずですので確認してみてください。 '5-NOV-00'での形式での日付データを挿入できないのであれば、なにか別の形式になっている可能性があります。 「初期化ファイルの修正後ORACLE再起動」か、 SQL*Plusより、 ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY'; で変更できると思います。

Fireworks
質問者

お礼

chaffさんのアドバイス通り ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YY'; を実行したところ、ちゃんとinsertできました。 かなり嬉しいです。 しかし残念ですが自分の初期化ファイルを見つけることができませんでした。 d:\oracle\admin\???\pfile にあるファイルがそうかなと思いましたが、NLS_DATE_FORMATの記述はありませんでした。 何はともあれ問題は解決しましたので、感謝しています。ありがとうございました。

関連するQ&A

  • JDBCを使ってdate型へのINSERTはできますか?

    JDBCを使ってOracleへ接続し、DBへデータを挿入したいのですが、 日付型のデータがどうしてもうまく挿入できません。 jsp + Servlet + Bean で開発しています。 使っているテーブルは CREATE TABLE USERS (     USERID     VARCHAR2(10) NOT NULL,     PASSWORD  VARCHAR2(10) NOT NULL,     NAME      VARCHAR2(50) NULL,     SEX       VARCHAR2(5)  NULL,     BIRTHDAY   DATE       NULL,     PRIMARY KEY (USERID, PASSWORD) ) という風な型で、定義しています。 DBへのINSERT処理は、Beanで行っています。 以下のINSERT文を実行したのですが、うまくINSERTできませんでした。 String sqlQuery = "INSERT INTO USERS (USERID, PASSWORD, NAME, SEX, BIRTHDAY)" + "VALUES ('use', 'pass', 'ナマエ', '女性', '1980/06/05')" int numOfUpdate = statement.executeUpdate(sqlQuery); ちなみに、この中のdate型で定義している「BIRTHDAY」を除いたINSERT文 String sqlQuery = "INSERT INTO USERS (USERID, PASSWORD, NAME, SEX)" + "VALUES ('use', 'pass', 'ナマエ', '女性')" int numOfUpdate = statement.executeUpdate(sqlQuery); だとうまくINSERTできます。 sql*plusを使って直に書くと、両方うまくINSERTできました。 ●その後に、「BIRTHDAY」をdate型からVARCHAR2(10)へ定義し直し、  DBを作り直して実行した所、うまくINSERTできるようになりました。 なぜ「date型」だとINSERTできず、「VARCHAR2型」だとINSERTできるのか、 知っている方がおられましたら、ぜひ教えて頂きたいです。

    • ベストアンサー
    • Java
  • Oracle 8i コンマ(,)を含むデータをinsertしたい

    再度、質問させていただきます。 コンマを含むデータをinsertするにはどうしたらよいでしょうか? 例えば、次のようなテーブルを作成します。 CREATE TABLE SAMPLE (NAME VARCHAR( 15) NOT NULL, ADDRESS VARCHAR(30)); そして、 insert into sample values (Yamada, '731 Fondren,Houston,TX'); とinsertすると当然エラーになります。”ORA-00984: ここでは列は使用できません”というエラーが返ってきます。 "731 Fondren,Houston,TX"というコンマを含むアドレスをinsertしたいのですが、どうしたらよいでしょうか? set scan off をしてもダメで、 '[731 Fondren,Houston,TX]'という風に変えても、上と同じ”ORA-00984: ここでは列は使用できません”というエラーが返ってきます。グーグルで調べて、arrayof(text)という風にタイプを変えるのかなと試しましたが、だめでした。 何かアドバイスをお願いします。

  • ora-01722のエラーについて

    あるテーブル「ABC」の定義が CHAR(5), VARCHAR2(10), VARCHAR2(20), NUMBER(5,2) だったとします、 そこへINSERT文で INSERT INTO ABC VALUES ('A1111', 'B222222', 'C33333333', '0') を実行すると、 「ORA-01722: 数値が無効です。」 のエラーとなってしまいます、 形式的には合っているように思えるのですが、 どういった問題が考えられるでしょうか? ORACLEバージョンは9.2です、 宜しくお願い致します。

  • mySQLでINSERT Errorとなります。

    初心者です。よろしくお願いいたします。 データを入れたいのですが、エラーとなってしまいます。 以下でデータベースとテーブルを作成し、 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } $sql = 'CREATE DATABASE tori'; if (mysql_query($sql, $db)) { echo "データベースtori の作成に成功しました\n"; } else { echo 'データベースtoriの作成に失敗しました: ' . mysql_error() . "\n";} mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $query ="create table {$tbl_name} ( id char(8) primary key, date TEXT, sex TEXT, age TEXT )TYPE=MyISAM"; mysql_query($query); $query ="INSERT INTO `houzingpark`.`hatogaya` ( id , date , sex , iro ) VALUES ( '2', 'uu', 'ii', 'po' )"; mysql_close($db); ?> 以下で入れ込みたいのですが、出来ないのです。 <?php $db_name="tori"; $tbl_name = "hato"; $db = mysql_connect('localhost', 'root', ''); if (!$db) { die('接続できません: ' . mysql_error()); } mysql_select_db($db_name,$db) or die("データベースへの接続エラー"); $sql="INSERT INTO hatogaya ( id , date , sex , iro ) VALUES ( 3, 2005-12-3, mesu, cya )"; mysql_query($sql); if(!$result){print 'INSERT Error!';} echo $sql; mysql_close($db); ?> でINSERTしようとするのですが、INSERT Error!と表示されてしまいます。 Adminで見るとデータベースとテーブルは出来ているのですが、どうしてもINSERTできないのです。 もう何時間も悪戦苦闘しております。 どなたかご指導よろしくお願いいたします。

  • オラクルのSQLについて教えてください

    JavaでOracleに登録するプログラムを作成しています。 下記を実行したところ「ORA-01722: 数値が無効です」と 表示される始末です。 int inse = 0; inse = smt.executeUpdate("insert into MONEY_TABLE values ('"+ Y1 +"','"+ M1 +"','"+ ID1 +"','"+ KEY1 +"','"+ CHOICE1 +"','"+ CHOICE2 +"','"+ CHOICE3 +"','"+ KAMOKU1 +"','"+ FROM1 +"','"+ TO1 +"','"+ TRA1 +"','"+ PLA1 +"','"+ NAIYOU1 +"','"+ MONEY1 +"')"); ()内は、すべて変数です。 見難いと思いますが、アドバイスよろしくお願いします。

  • 複数行を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での複数行追加の良い方法がありましたら教えて頂ければ幸いです。 宜しくお願い致します。

  • Visual Basic Oracleエラー

    質問します。 Visual BasicからOracle データベースに登録するときに、 エラーが発生したときにメッセージを出るようにしていますが、例えば、ORA-00000のセレクト文抽出件数がない場合、ORA-00001のinsertで既に登録があるとき、など、システムを使う人がわかりやすいようにエラーメッセージそれぞれを二つだけ変えたいと思うのですが、エラーメッセージ分岐方法がわかりません。 ex.numberとかで指定できるかと思ったのですが、できなかったので方法を教えてください。 よろしくお願いします。

  • 日付型カラムへのデータINSERT

    お世話になります。ひとつご教授ください。 オラクル10g, ojdbc14でjdk1.4.2から接続です。 INSERT命令を使ってテーブルにレコードを追加する際に、DATE型のカラムに対して INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27 12:00:00', ...); を実行するとエラーORA-01861が出ます。そこで INSERT TABLE_A (DATE1, ...) VALUES ('2006-4-27', ...); このように記述して再度実行すると通ります。 このようなとき、時間の部分まで設定した値をカラムに格納したいときはどうしたらよろしいでしょうか? よろしくお願いします。

  • ACCESS SQLのINSERTについて

    TBLというテーブルにINSERT文を使用して1行レコードを追加したいです。TBLテーブルのカラムAにはシステム日付を、カラムBには別テーブルのselect count(*)の実行結果を挿入したいのですがうまくいきません。何か良い方法はございませんでしょうか? INSERT INTO カウンタ統計 ( [DATE], USER_COUNT ) VALUES (date(), (SELECT COUNT(*) FROM hiplus_HW_USER)); ※日付は問題なく挿入できるのですがSELECT文の結果が挿入できない状況です。宜しくお願いします.

  • MySQL INSERT文 エラー

    カラム名を指定してデータを挿入するのがうまくいきません。 テーブル(tb1)作成後、たとえば、 insert into tb1(number, name, age) values(A104, '渡辺', 23); と入力すると、 '> と出力されてしまいます。 何が間違っているんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL