Llamadas a funciones escalaresScalar Function Calls

Las funciones escalares devuelven un valor para cada fila.Scalar functions return a value for each row. Por ejemplo, la función escalar de valor absoluto toma una columna numérica como argumento y devuelve el valor absoluto de cada valor de la columna.For example, the absolute value scalar function takes a numeric column as an argument and returns the absolute value of each value in the column. La secuencia de escape para llamar a una función escalar esThe escape sequence for calling a scalar function is

{FN función escalar }{fn scalar-function }

donde función escalar es una de las funciones enumeradas en el Apéndice E: funciones escalares.where scalar-function is one of the functions listed in Appendix E: Scalar Functions. Para obtener más información sobre la secuencia de escape de la función escalar, vea secuencia de escape de función escalar en el Apéndice C: gramática de SQL.For more information about the scalar function escape sequence, see Scalar Function Escape Sequence in Appendix C: SQL Grammar.

Por ejemplo, las siguientes instrucciones SQL crean el mismo conjunto de resultados de nombres de clientes en mayúsculas.For example, the following SQL statements create the same result set of uppercase customer names. La primera instrucción usa la sintaxis de secuencia de escape.The first statement uses the escape-sequence syntax. La segunda instrucción usa la sintaxis nativa para Ingres para OS/2 y no es interoperable.The second statement uses the native syntax for Ingres for OS/2 and is not interoperable.

SELECT {fn UCASE(Name)} FROM Customers  
  
SELECT uppercase(Name) FROM Customers  

Una aplicación puede mezclar llamadas a funciones escalares que usan la sintaxis nativa y llamadas a funciones escalares que usan la sintaxis ODBC.An application can mix calls to scalar functions that use native syntax and calls to scalar functions that use ODBC syntax. Por ejemplo, suponga que los nombres de la tabla Employee se almacenan como apellidos, una coma y un nombre.For example, assume that names in the Employee table are stored as a last name, a comma, and a first name. La siguiente instrucción SQL crea un conjunto de resultados de los apellidos de los empleados de la tabla Employee.The following SQL statement creates a result set of last names of employees in the Employee table. La instrucción utiliza la SUBcadena de la función escalar de ODBC y la función escalar SQL Server CHARINDEX y se ejecutará correctamente solo en SQL Server.The statement uses the ODBC scalar function SUBSTRING and the SQL Server scalar function CHARINDEX and will execute correctly only on SQL Server.

SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers  

Para obtener la máxima interoperabilidad, las aplicaciones deben usar la función escalar Convert para asegurarse de que la salida de una función escalar es el tipo necesario.For maximum interoperability, applications should use the CONVERT scalar function to make sure that the output of a scalar function is the required type. La función Convert convierte los datos de un tipo de datos SQL al tipo de datos SQL especificado.The CONVERT function converts data from one SQL data type to the specified SQL data type. La sintaxis de la función Convert esThe syntax of the CONVERT function is

Convert ( value_exp , data_type)CONVERT( value_exp , data_type)

donde value_exp es un nombre de columna, el resultado de otra función escalar o un valor literal, y data_type es una palabra clave que coincide con el nombre de #define que usa un identificador de tipo de datos de SQL, tal y como se define en el Apéndice D: tipos de datos.where value_exp is a column name, the result of another scalar function, or a literal value, and data_type is a keyword that matches the #define name that is used by an SQL data type identifier as defined in Appendix D: Data Types. Por ejemplo, la siguiente instrucción SQL usa la función Convert para asegurarse de que la salida de la función CURDATE es una fecha, en lugar de una marca de tiempo o datos de caracteres:For example, the following SQL statement uses the CONVERT function to make sure that the output of the CURDATE function is a date, instead of a timestamp or character data:

INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)  
   VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)  

Para determinar qué funciones escalares se admiten en un origen de datos, una aplicación llama a SQLGetInfo con las opciones SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS y SQL_TIMEDATE_FUNCTIONS.To determine which scalar functions are supported by a data source, an application calls SQLGetInfo with the SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS, and SQL_TIMEDATE_FUNCTIONS options. Para determinar qué operaciones de conversión son compatibles con la función Convert , una aplicación llama a SQLGetInfo con cualquiera de las opciones que comienzan con SQL_CONVERT.To determine which conversion operations are supported by the CONVERT function, an application calls SQLGetInfo with any of the options that start with SQL_CONVERT.