CFSTOREDPROC  
説明

サーバーデータベースのストアードプロシージャを実行します。CFSTOREDPROC タグを使用すると、データベース接続情報の指定や、ストアードプロシージャの識別が行えます。

 
カテゴリ

データベース操作タグ

 
シンタックス
<cfstoredproc
   procedure = "procedure name"
   dataSource = "ds_name"
   username = "username"
   password = "password"
   blockFactor = "blocksize"
   debug = "yes"、"no"
   returnCode = "yes"、"no">
result = "result_name"
 
関連項目

cfinsert、cfqueryparam、cfprocparam、 cfprocresult、 cftransaction、cfquery、cfupdate、『ColdFusion MX 開発ガイド』の第13章の「ColdFusion アプリケーションの設計と最適化」 の「データベース使用の最適化」

 
ヒストリ

ColdFusion MX 7: result 属性が追加されました。

ColdFusion MX: connectString、dbName、dbServer、dbtype、provider、および providerDSN 属性は使用禁止になりました。ColdFusion 5 よりも後のリリースでは、これらは機能せず、エラーを引き起こす可能性があります。ColdFusion MX では、Type 4 JDBC ドライバを使用しています。

 
使用方法

このタグは、データベースのストアードプロシージャを呼び出すために使用します。このタグ内で、次のように cfprocresult タグおよび cfprocparam タグをコーディングします。

  • cfprocresult ストアードプロシージャから結果セットが返される場合は、結果セットごとに 1 つの cfprocresult タグをコーディングします。
  • cfprocparam ストアードプロシージャで入力または出力パラメータが使用されている場合は、パラメータごとに 1 つの cfprocparam タグをコーディングし、ストアードプロシージャ定義内の各パラメータを含めます。さらに、cfprocparam タグは、ストアードプロシージャ定義のパラメータと同じ順序でコーディングする必要があります。

returnCode = "Yes" に設定すると、このタグによりストアードプロシージャのステータスコードを保持する変数 prefix.statusCode が設定されます。ステータスコードの値は DBMS によって異なります。コード値の意味については、DBMS のドキュメントを参照してください。

このタグでは、変数 prefix.ExecutionTime が設定されます。この変数には、ストアードプロシージャの実行時間がミリ秒単位で指定されます。

prefix の値は、cfstoredproc か、または result 属性を指定した場合はその属性で指定される値です。result 属性は、複数のページから同時に呼び出される可能性があるストアードプロシージャについて、一方の呼び出しの結果が他方の呼び出しの結果を上書きしないようにするための方法を提供します。たとえば、result 属性を myResult と指定した場合は、myResult.ExecutionTime として ExecutionTime にアクセスします。それ以外の場合は、cfstoredproc.ExecutionTime としてアクセスします。

このタグは、ストアードプロシージャとその使用方法について十分に理解してから実装してください。

次の例では、Sybase ストアードプロシージャを使用しています。Oracle 8 または 9 のストアードプロシージャの例については、cfprocparamを参照してください。

 
<!--- この参照専用の例では、3 つの結果セットを返す Sybase ストアードプロシージャを実行します。必要なの
は、そのうち 2 つの結果セットです。このストアードプロシージャは、ステータスコードと出力パラメータを 1 
つ返します。それらをこの例で表示します。パラメータには名前指定表記を使用します。 --->
<!--- 
<cfstoredproc procedure = "foo_proc"
   dataSource = "MY_SYBASE_TEST" username = "sa"
   password = "" dbServer = "scup" dbName = "pubs2"
   returnCode = "Yes" debug = "Yes">
   <cfprocresult name = RS1>
   <cfprocresult name = RS3 resultSet = 3>

   <cfprocparam type = "IN"       CFSQLType = CF_SQL_INTEGER
         value = "1" dbVarName = @param1>
   <cfprocparam type = "OUT" CFSQLType = CF_SQL_DATE
      variable = FOO dbVarName = @param2>
</cfstoredproc>
--->
<!--- 
<cfoutput>   出力パラメータ値 :'#foo#'<br></cfoutput>
<h3>結果情報</h3>
<cfoutput query = RS1>#name#,#DATE_COL#<br></cfoutput><p>
<cfoutput>
   <hr>
   <p>レコード件数:#RS1.recordCount# >p>列:#RS1.columnList#   <hr>
</cfoutput> 
<cfoutput query = RS3>#col1#,#col2#,#col3#<br>
</cfoutput><p>
<cfoutput>
   <hr>
   <p>レコード件数:#RS3.recordCount# <p>列:#RS3.columnList#   <hr>
   ストアードプロシージャの戻りコード :'#cfstoredproc.statusCode#'<br>
</cfoutput>
--->
PROCEDURE  
  必須
 

データベースサーバー上のストアードプロシージャの名前です。

DATASOURCE  
  必須
 

ストアードプロシージャが含まれているデータベースをポイントするデータソースの名前です。

USERNAME  
  オプション
 

データソースセットアップのユーザー名よりも優先されます。

PASSWORD  
  オプション
 

データソースセットアップのパスワードよりも優先されます。

BLOCKFACTOR  
  オプション
 
Default value: "1"

サーバーから一度に取得する行の最大数です。値の範囲は 1 ~ 100 です。

DEBUG  
  オプション
 
Default value: "No"
  • Yes: 各ステートメントのデバッグ情報をリストします。
  • No
RETURNCODE  
  オプション
 
Default value: "No"
  • Yes: ストアードプロシージャによって返されるステータスコードを cfstoredproc.statusCode に挿入します。
  • No
RESULT  
  オプション
 

cfstoredproc が statusCode 変数および ExecutionTime 変数を返す構造体の名前を指定します。指定すると、その値が接頭辞として cfcfstoredproc の代わりに使用され、これらの変数にアクセスするときに使われます。詳細については、「使用方法」を参照してください。