Siebel Developer's Reference > Operators, Expressions, and Conditions > Search Syntax >

About Using [Fieldname.TransCode] to Retrieve the Language-Independent Code for Multilingual Fields


Searching on multilingual lists of values (MLOVs) can be computationally intensive because these searches require a join to the S_LST_OF_VAL table in the resulting SQL code.

To increase performance when there are many records and multiple languages, you can use [Fieldname.TransCode] in the business component search specification. This function retrieves the (untranslated) language-independent code (LIC) from a column in the base table, rather than returning the display value in the current language.

The syntax is as follows:

[Fieldname.TransCode] = 'lang_ind_code'

NOTE:  TransCode is case sensitive. Using [Fieldname.Transcode] or [Fieldname.transcode] does not work.

For example, in the Service Request business component, the Status field maps to the SR_STAT_ID column. This column stores the LIC value "Open," but when MLOVs are configured, a query on the Status field always brings back the display value for "Open" in the current language (as set with the Language Parameter), such as "Offen" if the language is DEU.

If you wish to set a language-independent search specification, you can use

[Status] = LookupValue('Open')

which on a DEU object manager would add a join to S_LST_OF_VAL in the resulting SQL to find the DEU display value for the LIC value "Open" and compare that to the LIC in column SR_STAT_ID. This makes the query complex and not easily index supportable.

You can simplify the resulting SQL command by using

[Status.TransCode] = 'Open'

as the search specification instead.

Having [Status.TransCode] in the SQL query retrieves the LIC value directly from the database column, and does not translate the LIC value into its display value.

Therefore, using [Fieldname.TransCode] improves the performance for queries on MLOV-enabled columns, particularly if the query or search spec includes other columns from the same base table, because a combined index including the MLOV column can now be used. This typically is not the case when using LookupValue() or querying directly on MLOVs.

Alternatively, you can use the [Fieldname.TransCode] with calculated fields and the GetFieldValue business component method. For example, you can create a calculated field using the [Priority.TransCode] calculated value in the Service Request business component. In scripts, you can also use the this.GetFieldValue("Priority.TransCode") statement.

NOTE:  This alternative only works if you use a MLOV field such as the Translation Table Name property of the underlying column.

Siebel Developer's Reference Copyright © 2011, Oracle and/or its affiliates. All rights reserved. Legal Notices.