[seasar-dotnet:1897] Re: [DBFlute]OutsideSQLでのエラー
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2010年 12月 17日 (金) 18:54:51 JST
uparrowです。
jflute様、hajimeni様、返事をいただきましてありがとうございました。
> > o ORA-12704 がOracle的にどんなときに発生するエラーなのか
- 演算子または組込み関数の文字列オペランド(NLSPARAMS引数以外)のキャラクタ・セットが同じではない。
- nlsparamsオペランドがデータベース・キャラクタ・セットと一致していない。
- データベース・キャラクタ・セット以外のキャラクタ・セットを含む文字列デー
タが、その文字列データを予期していなかった組込み関数に渡された。
- CHR()またはCSCONVERT()の第2の引数が、CHAR_CSでもNCHAR_CSでもない。
- INSERT文のVALUES句またはUPDATE文のSET句の文字列式に含まれたキャラクタ
・セットが、値を挿入する列のキャラクタ・セットと同じではない。
- 表を作成するときにDEFAULT句に指定された値のキャラクタ・セットが、列に
対して宣言されたキャラクタ・セットと同じではない。
- PL/SQLファンクションの引数が、対応するパラメータのキャラクタ・セット要
求に適合しない。
のようなもののようです。ただ、/*pmb.INPUT_TIME*/が無い状態だと問題なく実
行できるのでこれらのことが原因なのか?でした。
> > o カラムの型はどんな型なのか (特にパラメータとして使っているINPUT_TIME)
> > -> character set mismatch というメッセージがあるので型が疑わしいので
対象のテーブルはchar、varchar、dateのみで特別な型は使用しておりません。
> > o OutsideSqlTest は動くか?
> > -> /*pmb.INPUT_TIME*/ はコメントとしてみなされていれば通る筈(!?)
問題なく動きました。
> Oracleのバージョンは忘れましたが、NVARCHARにバインドしてINSERTするとおきた場合があった気がします。
情報ありがとうございます。
いろいろと試行錯誤をしておったところ、
insert into FAPAC_LOG_TBL (DISPO_FLAG, INPUT_TIME, FUNC_NO, TEHAI_NO)
values (TRANSLATE(/*pmb.HOGE*/'0' USING CHAR_CS ), '000000', '00', '0000000000' )
というようにTRANSLATE関数を入れたら実行できました。
ちょっと直接の原因が分からないままなのですが、
これで先に進むことができそうです。
> hajimeniです。
>
> Oracleのバージョンは忘れましたが、NVARCHARにバインドしてINSERTするとおきた場合があった気がします。
>
> 何かの参考になれば。
>
> --
> 西山はじめ
>
>
>
> 2010年12月16日22:11 kubo <[E-MAIL ADDRESS DELETED]>:
> > 久保(jflute)です。
> >
> > こんばんは、uparrowさん
> > 取り急ぎですが、
> >
> > o ORA-12704 がOracle的にどんなときに発生するエラーなのか
> > o カラムの型はどんな型なのか (特にパラメータとして使っているINPUT_TIME)
> > -> character set mismatch というメッセージがあるので型が疑わしいので
> > o OutsideSqlTest は動くか?
> > -> /*pmb.INPUT_TIME*/ はコメントとしてみなされていれば通る筈(!?)
> >
> > など、この辺りの情報も一緒に出して頂けると、
> > もっとML閲覧者も追求がしやすいと思います。
> >
> > 2010/12/16 <[E-MAIL ADDRESS DELETED]>:
> >> こんばんは、uparrowと申します。
> >>
> >> DBFluteのOutsideSQLでinsertを発行する必要があるのですが、
> >> 問題が発生してしまいメールいたしました。
> >> PKがないテーブルへデータをINSERTする必要があるためOutsideSQLで実行したい
> >> のですが、次のようなログが出力され失敗します。
> >>
> >> /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
> >> The SQL failed to execute!
> >>
> >> [Advice]
> >> Please confirm the Exception message.
> >>
> >> [Exception]
> >> Seasar.Framework.Exceptions.SQLRuntimeException
> >> [ESSR0071]SQLException occured, because System.Data.OracleClient.OracleException: ORA-12704: character set mismatch
> >>
> >> 場所 System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc)
> >> 場所 System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals)
> >> 場所 System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor)
> >> 場所 System.Data.OracleClient.OracleCommand.ExecuteNonQuery()
> >> 場所 Seasar.Framework.Util.CommandUtil.ExecuteNonQuery(IDataSource dataSource, IDbCommand cmd)
> >>
> >> [NextException]
> >> System.Data.OracleClient.OracleException
> >> ORA-12704: character set mismatch
> >>
> >> ErrorCode = -2146232008
> >> HelpLink =
> >>
> >> SQLは
> >>
> >> -- !df:pmb!
> >> -- !!string DISPO_FLAG!!
> >> insert into FAPAC_LOG_TBL (DISPO_FLAG, INPUT_TIME, FUNC_NO, TEHAI_NO) values ('0', /*pmb.INPUT_TIME*/'000000', '00',
> >> '0000000000' )
> >>
> >> というものです。
> >> ただ、試しに、このSQLをパラメータを全く使用しない
> >> insert into FAPAC_LOG_TBL (DISPO_FLAG, INPUT_TIME, FUNC_NO, TEHAI_NO) values ('0', '000000', '00', '0000000000' )
> >> このようにして実行した場合は問題なくINSERTできるのです。
> >>
> >> どのあたりに原因があるのか全くわからず、なにか少しでも情報があればと思い
> >> メールさせていただきました。
> >>
> >> なお、Oracleとの接続はOracle用プロバイダクラスで行っております。
> >>
> >> よろしくお願いいたします。
> >> _______________________________________________
> >> seasar-dotnet mailing list
> >> [E-MAIL ADDRESS DELETED]
> >> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >>
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
--
むらかみれお <[E-MAIL ADDRESS DELETED]>
seasar-dotnet メーリングリストの案内