[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 メーリングリストの案内