cfprocparam

注意:

このタグは、CFFiddle ではサポートされていません。

説明

ストアドプロシージャのパラメーターを定義します。このタグは、cfstoredproc タグ内にネストします。

カテゴリ

シンタックス

<cfprocparam 
CFSQLType = &quot;parameter data type&quot; 
maxLength = &quot;length&quot; 
null = &quot;yes|no&quot; 
scale = &quot;decimal places&quot; 
type = &quot;in|out|inout&quot; 
value = &quot;parameter value&quot; 
variable = &quot;variable name&quot;
dbvarname = &quot;proc parameter name&quot;>
注意:

このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。

関連項目

履歴

ColdFusion 11 アップデート 3:以前無視されていた dbvarname  属性が復元されました。

ColdFusion MX

  • : maxrows  属性が廃止されました。
  • dbvarname  属性  の動作が変更されました。すべてのドライバで無視されるようになりました。ColdFusion では JDBC 2.2 が使用され、名前付きパラメーターはサポートされません。これは非推奨になりました。
  • maxLength 属性の動作が変更されました。IN および INOUT パラメーター値に適用されるようになりました。

属性

属性

必須/オプション

デフォルト

説明

CFSQLType

必須

 

任意の型のパラメーターをバインドする SQL 型です。ColdFusion では次の値がサポートされます。名前の末尾の要素は SQL データ型に対応しています。データベースシステムによっては、このリストの別のサブセットがサポートされる場合があります。サポートされているパラメータ型については、ご使用の DBMS のドキュメントを参照してください。

  • CF_SQL_BIGINT
  • CF_SQL_BIT
  • CF_SQL_BLOB
  • CF_SQL_CHAR
  • CF_SQL_CLOB
  • CF_SQL_DATE
  • CF_SQL_DECIMAL
  • CF_SQL_DOUBLE
  • CF_SQL_FLOAT
  • CF_SQL_IDSTAMP
  • CF_SQL_INTEGER
  • CF_SQL_LONGVARCHAR
  • CF_SQL_MONEY
  • CF_SQL_MONEY4
  • CF_SQL_NUMERIC
  • CF_SQL_REAL
  • CF_SQL_REFCURSOR
  • CF_SQL_SMALLINT
  • CF_SQL_TIME
  • CF_SQL_TIMESTAMP
  • CF_SQL_TINYINT
  • CF_SQL_VARCHAR
    ColdFusion SQL データ型から JDBC データ型へのマッピングについては、cfqueryparam を参照してください。

maxLength

オプション 

IN または INOUT の場合での、value 属性の文字列の最大長です。maxLength を 0 に設定すると、長さは任意になります。type=out を指定するときは、maxLength 属性は不要です。

null

オプション

no

パラメーターを null 値として渡すかどうかを指定します。OUT タイプのパラメータでは使用しません。

  • yes:value 属性を無視します。
  • no

scale

オプション 

0

数値パラメーターの小数点以下の桁数です。scale が 0 の場合、値は整数に制限されます。

type

オプション

in

  • in: データベースシステムにデータを送信するときにのみ使用します。値でパラメーターを渡します。
  • out:データベースシステムからデータを受信するときにのみ使用します。パラメーターをバインド変数として渡します。
  • inout:データを送信および受信するときに使用します。パラメーターをバインド変数として渡します。

value

type = "IN" の場合は必須

 

ColdFusion からストアドプロシージャに渡す値です。inout パラメーターの場合はオプションです。

variable

type = "OUT" または "INOUT" の場合は必須

 

ColdFusion 変数名です。ストアドプロシージャが呼び出された後、出力パラメーターに与えられる値を参照します。in パラメーターの場合は無視されます。

dbVarName オプション  

名前付きパラメーターがストアドプロシージャに送られる場合、この属性を使用してパラメーターの名前を指定できます。使用される場合、この属性は、ストアードプロシージャの各 cfのパラメータータグとともに表示されます。

ColdFusion 11 では、JVM フラグ(-Dcoldfusion.ignoredbvarname=true)を使用してこの属性を無効にできます。

ただし、ColdFusion(2016 リリース)では、この JVM フラグがサポートされていません

注意:データベースでは名前付きパラメーターに変数プレフィックスが必要です。

  1. Oracle の :
  2. SQLServer の @

使用方法

このタグを使用すると、ストアドプロシージャのパラメータとそのデータ型を指定できます。パラメーターごとに 1 つの cfprocparam タグをコーディングします。コーディングするパラメーターは、パラメーターの種類と DBMS によって異なります。ColdFusion では、定位置パラメーターがサポートされます。定位置パラメーターを使用する場合は、cfprocparam タグをストアドプロシージャ定義内の関連するパラメーターと同じ順番でコーディングする必要があります。出力変数は、variable 属性で指定された ColdFusion 変数内に格納されます。
cfprocparam タグは、Oracle 8 および 9 の Reference Cursor には使用できません。代わりに、cfprocresult タグを使用します。

次の例では、データベースにデータを挿入する Oracle および Microsoft SQL Server のストアドプロシージャを示します。これらのストアドプロシージャは同等です。いずれのストアドプロシージャを呼び出す場合も CFML は同じです。
次の例では、Oracle のストアドプロシージャを示します。

CREATE OR REPLACE PROCEDURE Insert_Book ( 
arg_Title Books.Title%type, 
arg_Price Books.Price%type, 
arg_PublishDate Books.PublishDate%type, 
arg_BookID OUT Books.BookID%type) 
AS 
num_BookID NUMBER; 
BEGIN 
SELECT seq_Books.NEXTVAL 
INTO num_BookID 
FROM DUAL; 

INSERT INTO 
Books ( 
BookID, 
Title, 
Price, 
PublishDate ) 
VALUES ( 
num_BookID, 
arg_Title, 
arg_Price, 
arg_PublishDate ); 

arg_BookID := num_BookID; 
END; 
/

次の例では、SQL Server のストアドプロシージャを示します。

CREATE PROCEDURE Insert_Book ( 
@arg_Title VARCHAR(255), 
@arg_Price SMALLMONEY, 
@arg_PublishDate DATETIME, 
@arg_BookID INT OUT) 
AS 
BEGIN 
INSERT INTO 
Books ( 
Title, 
Price, 
PublishDate ) 
VALUES ( 
@arg_Title, 
@arg_Price, 
@arg_PublishDate ); 

SELECT @arg_BookID = @@IDENTITY; 
END;

いずれのストアドプロシージャを呼び出す場合も、次の CFML コードを使用します。

<cfset ds = &quot;sqltst&quot;> 
<! --- <cfset ds = &quot;oratst&quot;> ---> 

<! --- 新しい本を送信する場合は、レコードを挿入して確認を表示する---> 
<cfif isDefined(&quot;form.title&quot;)> 
<cfstoredproc procedure=&quot;Insert_Book&quot; datasource=&quot;#ds#&quot;> 
<cfprocparam cfsqltype=&quot;cf_sql_varchar&quot; value=&quot;#form.title#&quot;> 
<cfprocparam cfsqltype=&quot;cf_sql_numeric&quot; value=&quot;#form.price#&quot;> 
<cfprocparam cfsqltype=&quot;cf_sql_date&quot; value=&quot;#form.price#&quot;> 
<cfprocparam cfsqltype=&quot;cf_sql_numeric&quot; type=&quot;out&quot; variable=&quot;bookId&quot;> 
</cfstoredproc> 

<cfoutput> 
<h3>'#form.title#' inserted into database.ID は #bookId # です。 
 

 
</h3> 
</cfoutput> 

</cfif> 
<cfform action=&quot;#CGI.SCRIPT_NAME#&quot; method=&quot;post&quot;> 
<h3>新規ブックを挿入</h3> 

Title: 
<cfinput type=&quot;text&quot; size=&quot;20&quot; required=&quot;yes&quot; name=&quot;title&quot;/> 
<br/> 

Price: 
<cfinput type=&quot;text&quot; size=&quot;20&quot; required=&quot;yes&quot; name=&quot;price&quot; validate=&quot;float&quot;/> 
<br/> 

Publish Date: 
<cfinput type=&quot;text&quot; size=&quot;5&quot; required=&quot;yes&quot; name=&quot;publishDate&quot; validate=&quot;date&quot;/> 
<br/> 

<input type=&quot;submit&quot; value=&quot;Insert Book&quot;/> 

</cfform>

別の例:

<cfstoredproc procedure = &quot;foo_proc&quot; 
dataSource = &quot;MY_SYBASE_TEST&quot; username = &quot;sa&quot; 
password = &quot;&quot; dbServer = &quot;scup&quot; dbName = &quot;pubs2&quot; 
returnCode = &quot;Yes&quot; debug = &quot;Yes&quot;> 
<cfprocresult name = RS1> 
<cfprocresult name = RS3 resultSet = 3> 

<cfprocparam type = &quot;IN&quot; CFSQLType = CF_SQL_INTEGER 
value = &quot;1&quot; dbVarName = @param1> 
<cfprocparam type = &quot;OUT&quot; CFSQLType = CF_SQL_DATE 
variable = FOO dbVarName = @param2> 
</cfstoredproc> 

 Adobe

ヘルプをすばやく簡単に入手

新規ユーザーの場合

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX 2024

Adobe MAX
クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン

Adobe MAX

クリエイティブカンファレンス

10 月 14 日~ 16 日 マイアミビーチおよびオンライン