[seasar-dotnet:1743] [DBFlute.NET]OutsideSqlにて不適切な構文がありますのエラー

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2010年 6月 19日 (土) 12:42:29 JST


お世話になっております、uparrowです。

大変便利にDBFluteを利用させていただいております。
複雑なSQLを発行したく、初めてOutsideSqlに挑戦しております。

OutsideSqlを用いでデータの取得を行いたいのですが、
原因がわからない実行時エラーが出て困っております。

            String path = TZaikoDataBhv.PATH_selectCurrentZaiko;
            CurrentZaikoPmb pmb = new CurrentZaikoPmb();
            pmb.LatestMonthryTanaDate = "20091231";
            pmb.BasisDate = "20100218";
            pmb.FrHinmokuCd = null;
            pmb.ToHinmokuCd = null;
            pmb.FrSoukoCd = "0001";
            pmb.ToSoukoCd = "0001";
            IList<CurrentZaiko>      curZaikoList = tZaikoDataBhv.OutsideSql().SelectList<CurrentZaiko>(path, pmb);

このようにして外出しSQLを実行したのですが、
SelectListのところでExceptionが発生します。
使用しているSQLのファイルは添付したものとなります。
(実際はもっと複雑なSQLなのですが、原因と思われる部分に着目し一部を切り出しました。)

ex.Messageには次のようなメッセージが設定されておりました。

==== ここから ====
Look! Read the message below.
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
The SQL failed to execute!

[Advice]
Please confirm the Exception message.

[Exception]
Seasar.Framework.Exceptions.SQLRuntimeException
[ESSR0071]SQLException occured, because System.Data.SqlClient.SqlException: 'SOUKO_CD' 付近に不適切な構文があります。
   場所 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   場所 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   場所 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   場所 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   場所 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   場所 System.Data.SqlClient.SqlDataReader.get_MetaData()
   場所 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
   場所 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   場所 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
   場所 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   場所 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   場所 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   場所 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
   場所 Seasar.Framework.Util.CommandUtil.ExecuteReader(IDataSource dataSource, IDbCommand cmd)

[NextException]
System.Data.SqlClient.SqlException
'SOUKO_CD' 付近に不適切な構文があります。
  ErrorCode = -2146232060
  HelpLink  = 
==== ここまで ====

なお、
            pmb.FrSoukoCd = null;
            pmb.ToSoukoCd = null;
とすると、例外が発生せず、データの取得は成功します。
条件句の部分が問題なのかもしれませんが、具体的に何が間違っているのかわからない状態です。
サンプルを参考に、/*IF*/ を利用したつもりなのですが。。。

なにか、方法に誤りがあるのでしょうか?
または、問題となっている箇所がわかる方法はございますでしょうか?

このSQLを発行すると問題なくデータが取得できますし、
outside-sql-test.batも成功しました。

使用しているDBFluteはdbflute-0.8.9.9となります。

以上、よろしくお願いいたします。
-- 
<[E-MAIL ADDRESS DELETED]>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: TZaikoDataBhv_selectCurrentZaiko.sql
Type: application/octet-stream
Size: 1154 bytes
Desc: 無し
URL: <http://ml.seasar.org/archives/seasar-dotnet/attachments/20100619/9cfbc6b5/attachment.obj>


seasar-dotnet メーリングリストの案内