The Input of most GeneXus Objects is:
The Data Provider supports receiving parameters, but all parameters are "IN" parameters. Remember the output is specified independently through the Output Properties.
Even though the input is usually taken from the Database, it is usually necessary to have other kinds of input data. Because a Data Provider implements an output-driven programming (that is to say, declarative), the only way to obtain information to fill hierarchical structures is through assignations:
Element = Expression
&var = Expression
So, every 'thing' that could be considered as (part of) an expression, is a valid input. For instance: an udp (calling a Procedure as well as a Data Provider. For the latter, you can see a simple sample here, or another one with Recursive Data Providers). Keep in mind that if the returned value is a collection, the Input clause is needed to iterate inside it.
GeneXus objects have other common Input sources: web sessions and cookies.
How do we obtain a web session value corresponding to a key? By having a variable of the 'WebSession' GeneXus data type, through the ''Get'' method:
value = &webSession.Get( key )
So, it could be a Data Provider's Input, as long as '&webSession.Get( Key )' returns a value. In other words, it could be assigned to an Element or variable of the Data Provider's source.
The same can be said about the 'GetCookie' function, used to obtain a cookie's value:
value = GetCookie( CookieName )