サブクエリ内の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
を持っていたので、これは本当に私を投げています。
2012に変数を割り当て、その変数をcfqueryparamで使用してみます。 cf_sql_numeric/cf_sql_integerを使用して同じ操作を試してください – DG3
cfsqltype属性は必須ではありませんが、削除して差異があるかどうか確認してください。 – duncan
@ user508518:これを実行してください。もともとは変数であり、テストを簡単にするために定数に変更しました。 – ale