4

注文情報についてデータベースにクエリを実行し、次にそのクエリのクエリを実行して注文合計を取得するスクリプトがあります。コードは次のようになります。

<!--- Retrieve order information from database --->
<CFQUERY  NAME="GetOrder">
  SELECT 
    oi.OrderQty, oi.ItemPrice
  FROM 
    Orders o,
    OrderItems oi, 
  WHERE 
    o.ID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#ATTRIBUTES.OrderID#">
    AND o.ID   = oi.OrderID
</CFQUERY>

<!--- Query the GetOrders query to find total $$ --->
<CFQUERY DBTYPE="Query" NAME="GetTotal">
  SELECT SUM(ItemPrice * OrderQty) AS OrderTotal
  FROM GetOrder
</CFQUERY>

データベースの itemPrice フィールドと OrderQty フィールドは、両方とも数値データ型として設定されています。なんらかの理由でスクリプトを実行すると、「クエリ オブ クエリのランタイム エラーです。非数値型にバイナリ数値演算子 [*|/] を適用できません」というエラーが表示されます。

クエリ内の数値が数値かどうかを確認するための簡単なチェックも実行し、クエリのクエリの前にスクリプトを中止しました。実行したチェックは次のようになります。

<cfoutput>
<cfif isnumeric(GetOrder.OrderQty)>1<cfelse>0</cfif>
<cfif isnumeric(GetOrder.ItemPrice)>1<cfelse>0</cfif>
<cfabort>
</cfoutput>

cfif の両方の結果が「1」として返されました

これについての助けをいただければ幸いです。

4

1 に答える 1