Partager via


Appels de fonctions scalaires

Les fonctions scalaires retournent une valeur pour chaque ligne. Par exemple, la fonction scalaire de valeur absolue prend une colonne numérique en tant qu’argument et retourne la valeur absolue de chaque valeur de la colonne. La séquence d’échappement pour appeler une fonction scalaire est la suivante :

{fn scalar-function }

scalar-function est l’une des fonctions répertoriées dans l’annexe E : fonctions scalaires. Pour plus d’informations sur la séquence d’échappement de fonction scalaire, consultez la section Séquence d’échappement de fonction scalaire dans l’annexe C : Grammaire SQL.

Par exemple, les instructions SQL suivantes créent le même jeu de résultats de noms de clients en lettres capitales. La première instruction utilise la syntaxe de la séquence d'échappement. La deuxième instruction utilise la syntaxe native d’Ingres pour OS/2. Cette dernière n’est pas interopérable.

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

Une application peut combiner des appels aux fonctions scalaires qui utilisent la syntaxe native et des appels aux fonctions scalaires qui utilisent la syntaxe ODBC. Par exemple, supposons que les noms de la table Employee sont stockés sous la forme d’un nom, d’une virgule et d’un prénom. L’instruction SQL suivante crée un jeu de résultats de noms d’employés dans la table Employee. L’instruction utilise la fonction scalaire ODBC SUBSTRING et la fonction scalaire SQL Server CHARINDEX et s’exécute correctement sur SQL Server.

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

Pour une interopérabilité maximale, les applications doivent utiliser la fonction scalaire CONVERT pour vous assurer que la sortie d’une fonction scalaire est le type requis. La fonction CONVERT convertit les données d’un type de données SQL en type de données SQL spécifié. La syntaxe de la fonction CONVERT est la suivante :

CONVERT( value_exp , data_type)

value_exp est un nom de colonne, le résultat d’une autre fonction scalaire ou une valeur littérale, et data_type est un mot clé qui correspond au nom #define utilisé par un identificateur de type de données SQL tel que défini dans l’Annexe D : types de données. Par exemple, l’instruction SQL suivante utilise la fonction CONVERT pour s’assurer que la sortie de la fonction CURDATE est une date, au lieu d’un horodateur ou de données de type caractère :

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

Pour déterminer les fonctions scalaires prises en charge par une source de données, une application appelle SQLGetInfo avec les options SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS et SQL_TIMEDATE_FUNCTIONS. Pour déterminer quelles opérations de conversion sont prises en charge par la fonction CONVERT, une application appelle SQLGetInfo avec l’une des options qui commencent par SQL_CONVERT.