CFPROCPARAM | |
説明
ストアードプロシージャのパラメータを定義します。このタグは、cfstoredproc タグ内にネストします。 |
|
カテゴリ
データベース操作タグ | |
シンタックス<cfprocparam type = "in"、"out"、"inout" variable = "variable name" value = "parameter value" CFSQLType = "parameter datatype" maxLength = "length" scale = "decimal places" null = "yes"、"no"> |
|
関連項目
cfinsert、cfprocresult、cfquery、cfqueryparam、cfstoredproc、cftransaction、cfupdate、『ColdFusion MX 開発ガイド』の第13章の「ColdFusion アプリケーションの設計と最適化」 の「ColdFusion アプリケーションの最適化」 |
|
ヒストリ
ColdFusion MX:
|
|
使用方法
ストアードプロシージャのパラメータとそれらのデータタイプを識別するときにこのタグを使用します。パラメータごとに 1 つの cfprocparam タグをコーディングしてください。パラメータ タイプと DBMS によって、コーディングするパラメータは異なります。ColdFusion MX では、位置パラメータのみがサポートされます。cfprocparam タグは、ストアードプロシージャ定義の関連パラメータと同じ順序でコーディングする必要があります。 出力変数は、variable 属性で指定された ColdFusion 変数に格納されます。 cfprocparam タグは、Oracle 8 および 9 の Reference Cursor には使用できません。代わりに、cfprocresult タグを使用します。 |
|
例
次の例では、Oracle 8 PL/SQL ストアードプロシージャを呼び出す方法を示します。ここでは、Reference Cursor タイプの Oracle 8 のサポートを利用しています。 次のパッケージ Foo_Data には、出力パラメータを Reference Cursor として宣言するプロシージャ refcurproc が含まれています。
このプロシージャでは、1 つの入力パラメータを整数として、1 つの出力パラメータを 2 バイトの char varying タイプとして宣言します。cfstoredproc タグによってこのプロシージャを呼び出せるようにするには、RDBMS 環境でこのプロシージャを作成、コンパイル、およびバインドしておく必要があります。 CREATE OR REPLACE PACKAGE Foo_Data AS TYPE EmpTyp IS REF CURSOR RETURN Emp%ROWTYPE; TYPE DeptTyp IS REF CURSOR RETURN Dept%ROWTYPE; refcurproc(pParam1 in out EmpTyp, pParam2 in out DeptTyp, pParam3 in integer, pParam4 out varchar2); END foo_data; CREATE OR REPLACE PACKAGE BODY Foo_Data AS PROCEDURE RefCurProc(pParam1 in out EmpTyp, pParam2 in out DeptTyp, pParam3 in integer, pParam4 out varchar2) IS BEGIN OPEN pParam1 FOR select * from emp; OPEN pParam2 FOR select * from dept; IF pParam3 = 1 THEN pParam4:= 'hello'; ELSE pParam4:= 'goodbye'; END IF; END RefCurProc; END Foo_Data; 次の CFML の例では、cfstoredproc、cfprocparam、および cfprocresult を使用して、RefCurProc プロシージャを呼び出す方法を示しています。 <cfstoredproc procedure = "foo_data.refcurproc" dataSource = "oracle8i" username = "scott" password = "tiger" returnCode = "No"> <cfprocparam type = "Out" CFSQLType = "CF_SQL_REFCURSOR" variable = "param1"> <cfprocparam type = "Out" CFSQLType = "CF_SQL_REFCURSOR" variable = "param2"> <cfprocparam type = "IN" CFSQLType = "CF_SQL_INTEGER" value = "1"> <cfprocparam type = "OUT" CFSQLType = "CF_SQL_VARCHAR" variable = "FOO"> <cfprocresult name = "rs1"> <cfprocresult name = "rs2" resultSet = "2"> </cfstoredproc> <b>最初の結果セット :</b><br> <hr> <cftable query = "rs1" colHeaders HTMLTable border = "1"> <cfcol header = "EMPNO" text = "#EMPNO#"> <cfcol header = "EMPLOYEE name" text = "#ENAME#"> <cfcol header = "JOB" text = "#JOB#"> <cfcol header = "SALARY" text = "#SAL#"> <cfcol header = "DEPT NUMBER" text = "#DEPTNO#"> </cftable> <hr> <b>2 番めの結果セット:</b><br> <cftable query = "rs2" colHeaders HTMLTable border = "1"> <cfcol header = "DEPT name" text = "#DNAME#"> <cfcol header = "DEPT NUMBER" text = "#DEPTNO#"> </cftable> <hr> <cfoutput> <b>出力パラメータ :</b>'#FOO#' </cfoutput> |
TYPE | |
オプション | |
Default value: "in"
|
VARIABLE | |
type = "OUT" または "INOUT" の場合は必須 | |
ColdFusion 変数名です。ストアードプロシージャが呼び出された後、出力パラメータに与えられる値を参照します。IN パラメータの場合は無視されます。 |
VALUE | |
type = "IN" の場合は必須 | |
ColdFusion からストアードプロシージャに渡される値です。INOUT パラメータの場合はオプションです。 |
CFSQLTYPE | |
必須 | |
任意のタイプのパラメータをバインドする SQL タイプです。ColdFusion では以下の値がサポートされます。名前の末尾の要素は SQL データタイプに対応しています。データベースシステムによっては、このリストの別のサブセットがサポートされる場合があります。サポートされているパラメータタイプについては、ご使用の DBMS のドキュメントを参照してください。
ColdFusion SQL データタイプから JDBC データタイプへのマッピングについては、cfqueryparamも参照してください。 |
MAXLENGTH | |
オプション | |
Default value: "0"
IN または INOUT の場合での、value 属性の文字列の最大長です。maxLength を 0 に指定すると、長さは任意になります。type=out を指定するときは、maxLength 属性は不要です。 |
SCALE | |
オプション | |
Default value: "0"
数値パラメータの小数点以下の桁数です。scale が 0 の場合、値は整数に制限されます。 |
NULL | |
オプション | |
Default value: "No"
パラメータを null 値として渡すかどうかを指定します。OUT タイプのパラメータでは使用しません。
|