2012-02-07 9 views
1

サブクエリ内のCFQUERYPARAMがあるクエリでSQL Serverから通常のエラーが発生します。サブクエリー内のCFQUERYPARAMのミステリーエラー

特定のエラーは、次のとおりです。

[Macromedia社] [のSequeLink JDBCドライバー] [ODBCソケット] [Microsoft]の[SQL Serverネイティブクライアント10.0]構文エラー、アクセス権違反、または他の非特異的なエラー

は、私は、このクエリにそれを蒸留することができましたFY列がdecimal(4,0)のように定義されて

<cfquery name="statusQuery" datasource="#application.dsn#"> 
SELECT 
    * 
FROM 
    BStatus A 
WHERE 
    A.FY = <cfqueryparam cfsqltype="cf_sql_decimal" value="2012" > 
    AND 
    A.BStatus like '0%' 
    AND 
    A.BStatus != '00' 
    AND 
    A.BDate = (
      SELECT 
       MAX(B.BDate) 
      FROM BStatus B 
      WHERE 
       B.FY = <cfqueryparam cfsqltype="cf_sql_decimal" value="2012" > 
       AND 
       B.BStatus like '0%' 
       AND 
       B.BTrack = A.BTrack 
       AND 
       B.BCode = A.BCode 
    ) 
    AND 
    A.BCode ='XYZ123AB' 
</cfquery> 

(簡体字)。私は数字(cf_sql_integer、cf_sql_numeric、cf_sql_real、cf_sql_floatなど)を扱うすべてのcfsqltypeを試しましたが、それらはすべて同じ結果を与えます。

サブクエリ内のCFQUERYPARAMをまっすぐな値(たとえば2012)に変更すると、クエリは正常に動作します。明らかに私は大きくCFQUERYPARAMを使用することを好むだろう。

  • のColdFusion 9.0

SQL Serverの残念ながら、他の状況に私は、ColdFusionに同梱のSQL Serverドライバを使用することはできませんが、ODBCブリッジを使用しなければならないため。データベースはシステムDSNとして定義されています。

ここではODBCブリッジが原因ですか?私は過去のプロジェクトのサブクエリでCFQUERYPARAMを持っていたので、これは本当に私を投げています。

+0

2012に変数を割り当て、その変数をcfqueryparamで使用してみます。 cf_sql_numeric/cf_sql_integerを使用して同じ操作を試してください – DG3

+0

cfsqltype属性は必須ではありませんが、削除して差異があるかどうか確認してください。 – duncan

+0

@ user508518:これを実行してください。もともとは変数であり、テストを簡単にするために定数に変更しました。 – ale

答えて

0

私が疑うように、鍵はODBCブリッジのようです。 SQL Serverドライバを使用して別のデータソースを設定しましたが、サブクエリで問題なくCFQUERYPARAMを使用することができました。

0

まだ別のcfsqltypeを試しましたか?私はcf_sql_integerとcf_sql_varcharを試して、どちらかが動作するかどうかを確認します。私は_decimalを使ったことが一度もありません。私は_floatを使用しました。

+0

番号を扱ったものすべてを試しました。それを質問に追加します。 – ale

関連する問題