A UDF is a User-Defined Routine that returns a scalar value. A user-defined function (UDF) can implement complex calculations or interact with an external system, taking zero or more scalar parameters and returning a scalar result. UDFs operate like built-in functions such as FLOOR() or LOWER(). SQLstream allows the creation of C++, Java or SQL functions.
For more information see Writing a UDF.
The following describes the differences between user-defined functions, procedures, and transforms:
A UDF is used in a scalar expression; it takes (0 .. n) scalar arguments and returns a scalar value. When used in a query, a scalar expression is evaluated for each row.
A UDP is just a UDF that returns no value; it is evaluated for a side effect.
A [UDX](/glossary/userdefinedtransform] is different: its output is a stream (or table) of rows, and its inputs can either be scalars, streams or tables. In SQL, a streaming argument to a UDX is represented as CURSOR(SELECT STREAM ... FROM ...) and a scalar is represented by any scalar expression.
The invocation of a UDX is quite often preceded by the keyword STREAM (for a streaming UDX) or TABLE (for a finite UDX). For example:
SELECT STREAM * FROM STREAM( filterSignal( CURSOR( SELECT STREAM * FROM "RawSignals")));