QueryAddColumn

説明

クエリーに新しい列を追加し、各行のその列に 1 次元配列の内容を挿入します。すべての列の行数が同じになるように、必要に応じてクエリー列のパディングが行われます。

戻り値

追加された列の列番号

カテゴリ

クエリー関数

関数のシンタックス

QueryAddColumn(query, column-name [, datatype], array-name)

関連項目

QueryNewQueryAddRowQuerySetCell、『ColdFusion アプリケーションの開発』のManaging data types for columns

履歴

ColdFusion MX 7: datatype パラメータが追加されました。

ColdFusion MX: 動作が変更されました。無効な名前の列を追加しようとするとエラーが発生します(以前のリリースでは、こうした列を追加することはできましたが、追加後にその列を参照することはできませんでした)。

パラメータ

パラメータ

説明

query

クエリーオブジェクトの名前です。

column-name

新しい列の名前です。

datatype

(オプション) 列のデータ型です。列に追加したデータがこの型ではない場合、またはデータをこの型に変換できない場合、ColdFusion ではエラーが生成されます。次のデータ型が有効です。

  • Integer: 32 ビットの整数です。

  • BigInt: 64 ビットの整数です。

  • Double: 64 ビットの小数です。

  • Decimal: java.math.BigDecimal で指定される、可変長の小数です。

  • VarChar: 文字列です。

  • Binary: バイト配列です。

  • Bit: ブール値 (1 = true、0 = false) です。

  • Time: 時刻です。

  • Date: 日付です。時刻情報を含めることができます。

array-name

配列の名前です。新しい列にはこの配列の要素が挿入されます。

使用方法

cfquery タグで取得したクエリーや QueryNew 関数で作成したクエリーなどのクエリーオブジェクトに列を追加できます。キャッシュされたクエリーに対して QueryAddColumn 関数を使用することはできません。この関数は、Oracle のストアドプロシージャが生成できる出力パラメータの配列からクエリーオブジェクトを生成するときに有用です。

datatype パラメータはオプションですが、常に使用することをお勧めします。このパラメータを使用しない場合、ColdFusion ではクエリーオブクエリー内のクエリーオブジェクトを使用するときに、列のデータ型を判別する必要があります。データ型を判別するには追加処理が必要であり、ColdFusion がデータ型を正しく推測しない場合、エラーが発生する可能性があります。

次の例では、クエリーオブジェクトを作成し、QueryAddColumn 関数を使用してクエリーオブジェクトに 3 つの列を追加して、結果を表示します。データを提供する配列のうち 2 つは残り 1 つの配列より短いため、クエリー内の対応する列には QueryAddColumn によってパディングが追加されます。

<!--- Make a query. ---> 
<cfset myQuery = QueryNew("")> 
 
<!--- Create an array. ---> 
<cfset FastFoodArray = ArrayNew(1)> 
<cfset FastFoodArray[1] = "French Fries"> 
<cfset FastFoodArray[2] = "Hot Dogs"> 
<cfset FastFoodArray[3] = "Fried Clams"> 
<cfset FastFoodArray[4] = "Thick Shakes"> 
<!--- Use the array to add a column to the query. ---> 
<cfset nColumnNumber = QueryAddColumn(myQuery, "FastFood", "VarChar", 
            FastFoodArray)> 
 
<!--- Create a second array. ---> 
<cfset FineCuisineArray = ArrayNew(1)> 
<cfset FineCuisineArray[1] = "Lobster"> 
<cfset FineCuisineArray[2] = "Flambe"> 
<!--- Use the array to add a second column to the query. ---> 
<cfset nColumnNumber2 = QueryAddColumn(myQuery, "FineCuisine", "VarChar", 
             FineCuisineArray)> 
 
<!--- Create a third array. ---> 
<cfset HealthFoodArray = ArrayNew(1)> 
<cfset HealthFoodArray[1] = "Bean Curd"> 
<cfset HealthFoodArray[2] = "Yogurt"> 
<cfset HealthFoodArray[3] = "Tofu"> 
<!--- Use the array to add a third column to the query. ---> 
<cfset nColumnNumber3 = QueryAddColumn(myQuery, "HealthFood", "VarChar", 
             HealthFoodArray)> 
 
<!--- Display the results. ---> 
<table cellspacing = "2" cellpadding = "2" border = "0"> 
<tr> 
<th align = "left">Fast Food</th> 
<th align = "left">Fine Cuisine</th> 
<th align = "left">Health Food</th> 
</tr> 
<cfoutput query = "myQuery"> 
<tr> 
<td>#FastFood#</td> 
<td>#FineCuisine#</td> 
<td>#HealthFood#</td> 
</tr> 
</cfoutput> 
</table>