| 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 タイプのパラメータでは使用しません。
|
|