View comments | RSS feed

cfstoredproc

Description

Executes a stored procedure in a server database. It specifies database connection information and identifies the stored procedure.

Category

Database manipulation tags

Syntax

<cfstoredproc 
procedure = "procedure name"
dataSource = "ds_name"
username = "username"
password = "password"
blockFactor = "blocksize"
debug = "yes" or "no"
returnCode = "yes" or "no">
result = "result_name"

See also

cfinsert, cfqueryparam, cfprocparam, cfprocresult, cftransaction, cfquery, cfupdate; Optimizing database use in Designing and Optimizing a ColdFusion Application in ColdFusion MX Developer's Guide

History

ColdFusion MX 7: Added the result attribute.

ColdFusion MX: Deprecated the connectString, dbName, dbServer, dbtype, provider, and providerDSN attributes. They do not work, and might cause an error, in releases later than ColdFusion 5. (ColdFusion MX uses Type 4 JDBC drivers.)

Attributes

Attribute Req/Opt Default Description

procedure

Required

 

Name of stored procedure on database server.

dataSource

Required

 

Name of data source that points to database that contains stored procedure.

username

Optional

 

Overrides username in data source setup.

password

Optional

 

Overrides password in data source setup.

blockFactor

Optional

1

Maximum number of rows to get at a time from server. Range is 1 to 100.

debug

Optional

No

  • Yes: lists debug information on each statement.
  • No

returnCode

Optional

No

  • Yes: populates cfstoredproc.statusCode with status code returned by the stored procedure.
  • No

result

Optional

 

Specifies a name for the structure in which cfstoredproc returns the statusCode and ExecutionTime variables. If set, this value replaces cfstoredproc as the prefix to use when accessing those variables. For more information, see the Usage section.

Usage

Use this tag to call a database stored procedure. Within this tag, you code cfprocresult and cfprocparam tags as follows:

If you set returnCode = "Yes", this tag sets the variable prefix.statusCode, which holds the status code for a stored procedure. Status code values vary by DBMS. For the meaning of code values, see your DBMS documentation.

This tag sets the variable prefix.ExecutionTime, which contains the execution time of the stored procedure, in milliseconds.

The value of prefix is either cfstoredproc or the value specified by the result attribute, if it is set. The result attribute provides a way for stored procedures that are called from multiple pages, possibly at the same time, to avoid overwriting the results of one call with another. If you set the result attribute to myResult, for example, you would access ExecutionTime as myResult.ExecutionTime. Otherwise, you would access it as cfstoredproc.ExecutionTime.

Before implementing this tag, ensure that you understand stored procedures and their usage.

The following examples use a Sybase stored procedure; for an example of an Oracle 8 or 9 stored procedure, see cfprocparam.

Example

<!--- This view-only example executes a Sybase stored procedure that 
returns three result sets, two of which we want. The stored
procedure returns the status code and one output parameter,
which we display. We use named notation for the parameters. ---> <!--- <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> The output param value: '#foo#'<br></cfoutput> <h3>The Results Information</h3> <cfoutput query = RS1>#name#,#DATE_COL#<br></cfoutput><p> <cfoutput> <hr> <p>Record Count: #RS1.recordCount# >p>Columns: #RS1.columnList# <hr> </cfoutput> <cfoutput query = RS3>#col1#,#col2#,#col3#<br> </cfoutput><p> <cfoutput> <hr> <p>Record Count: #RS3.recordCount# <p>Columns: #RS3.columnList# <hr> The return code for the stored procedure is: '#cfstoredproc.statusCode#'<br> </cfoutput> --->

ColdFusion 9 | ColdFusion 8 | ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX | Forums | Developer Center | KnowledgeBase | Bug Reporting

Version 7

Comments


ASandstrom said on Oct 17, 2005 at 11:11 AM :
There is a tech note:
The specified library "Procedure_Name" could not be loaded error when using cfstoredproc
at
http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=1cfc93e0
cf_dev2 said on Nov 12, 2006 at 10:53 PM :
The documentation states that the dbvarname attribute "is now ignored for all drivers". The foo_proc example should be updated to use positional notation - not named notation.

http://livedocs.macromedia.com/coldfusion/7/htmldocs/00000313.htm#1102102
Changed the dbvarname attribute behavior: it is now ignored for all drivers. ColdFusion MX uses JDBC 2.2 and does not support named parameters.
CF_Doctor said on Jan 22, 2007 at 7:52 AM :
The usage of queryName.RecordCount in the above example is improper. If the recordcount is 0, an error will display stating that queryNmae.recordCount does not exist. A conditional should be used instead checking for the existence of queryName.recordCount.

Cheers.
MSinclair said on Oct 9, 2007 at 5:17 AM :
The documentation states dbname is deprecated, however it is used in the
example.

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/coldfusion/7/htmldocs/00000338.htm