
202
Chapter 10: Writing and Calling User-Defined Functions
Using a CFML tag in a user-defined function
The most important advantage of using the
cffunction
tag over defining a function in CFScript
is that you can include CFML tags in the function. Thus, UDFs can encapsulate activities, such
as database lookups, that require ColdFusion tags. Also, you can use the
cfoutput
tag to display
output on the calling page with minimal coding.
Tip:
To improve performance, avoid using the
cfparam
tag in ColdFusion functions. Instead, use the
cfset
tag.
The following example function looks up and returns an employee’s department ID. It takes one
argument, the employee ID, and looks up the corresponding department ID in the CompanyInfo
Employee table:
<cffunction name="getDeptID" >
<cfargument name="empID" required="true" type="numeric">
<cfquery dataSource="CompanyInfo" name="deptID">
SELECT Dept_ID
FROM Employee
WHERE Emp_ID = #empID#
</cfquery>
<cfreturn deptID.Dept_ID>
</cffunction>
Using the Arguments scope in cffunction definitions
When you define a function using the
cffunction
tag, you generally refer to the arguments
directly by name if all arguments are named in the
cfargument
tags. If you do use the Arguments
scope identifier, follow the rules listed in
“About the Arguments scope” on page 194
.
Calling functions and using variables
You can call a function anywhere that you can use an expression, including in pound signs (#) in
a
cfoutput
tag, in a CFScript, or in a tag attribute value. One function can call another function,
and you can use a function as an argument to another function.
You call user-defined functions the same way you call any built-in ColdFusion functions.
Passing arguments
ColdFusion passes the following data types to the function by value:
•
Integers
•
Real numbers
•
Strings (including lists)
•
Date-time objects
•
Arrays
As a result, any changes that you make in the function to these arguments do not affect the
variable that was used to call the function, even if the calling code is on the same ColdFusion page
as the function definition.
ColdFusion passes queries, structures, and external objects such as COM objects into the
function by reference. As a result, any changes to these arguments in the function also change the
value of the variable in the calling code.
For an example of the effects of passing arguments, see
“Passing complex data” on page 210
.
Summary of Contents for COLDFUSION MX 61-DEVELOPING COLDFUSION MX
Page 1: ...Developing ColdFusion MX Applications...
Page 22: ...22 Contents...
Page 38: ......
Page 52: ...52 Chapter 2 Elements of CFML...
Page 162: ......
Page 218: ...218 Chapter 10 Writing and Calling User Defined Functions...
Page 250: ...250 Chapter 11 Building and Using ColdFusion Components...
Page 264: ...264 Chapter 12 Building Custom CFXAPI Tags...
Page 266: ......
Page 314: ...314 Chapter 14 Handling Errors...
Page 344: ...344 Chapter 15 Using Persistent Data and Locking...
Page 349: ...About user security 349...
Page 357: ...Security scenarios 357...
Page 370: ...370 Chapter 16 Securing Applications...
Page 388: ...388 Chapter 17 Developing Globalized Applications...
Page 408: ...408 Chapter 18 Debugging and Troubleshooting Applications...
Page 410: ......
Page 426: ...426 Chapter 19 Introduction to Databases and SQL...
Page 476: ...476 Chapter 22 Using Query of Queries...
Page 534: ...534 Chapter 24 Building a Search Interface...
Page 556: ...556 Chapter 25 Using Verity Search Expressions...
Page 558: ......
Page 582: ...582 Chapter 26 Retrieving and Formatting Data...
Page 668: ......
Page 734: ...734 Chapter 32 Using Web Services...
Page 760: ...760 Chapter 33 Integrating J2EE and Java Elements in CFML Applications...
Page 786: ...786 Chapter 34 Integrating COM and CORBA Objects in CFML Applications...
Page 788: ......