Megosztás:


Skaláris függvényhívások

A skaláris függvények minden sorhoz visszaadnak egy értéket. Az abszolút érték skaláris függvénye például argumentumként egy numerikus oszlopot vesz fel, és az oszlop egyes értékeinek abszolút értékét adja vissza. A skaláris függvény meghívásának feloldósorozata a következő:

{fnskaláris függvény}

ahol a skaláris függvény az E függelékben felsorolt függvények egyike: skaláris függvények. A skaláris függvények feloldási sorozatával kapcsolatos további információkért lásd a Skaláris függvények menekülési sorozatát a C függelékben: SQL Grammar.

A következő SQL-utasítások például ugyanazt az eredményhalmazt hozzák létre nagybetűs ügyfélnevekből. Az első utasítás a feloldósorozat szintaxisát használja. A második utasítás az OS/2 Ingres natív szintaxisát használja, és nem működik együtt.

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

Az alkalmazások kombinálhatják a natív szintaxist használó skaláris függvények hívásait és az ODBC-szintaxist használó skaláris függvények hívásait. Tegyük fel például, hogy az Alkalmazott tábla nevei vezetéknévként, vesszőként és utónévként vannak tárolva. A következő SQL-utasítás az Alkalmazottak táblában az alkalmazottak vezetékneveinek eredményhalmazát hozza létre. Az utasítás a SUBSTRING ODBC skaláris függvényt és a CHARINDEX SQL Server skaláris függvényt használja, és csak az SQL Serveren hajtja végre megfelelően.

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

A maximális együttműködési képesség érdekében az alkalmazásoknak a CONVERT skaláris függvénnyel kell meggyőződniük arról, hogy a skaláris függvény kimenete a szükséges típus. A CONVERT függvény egyetlen SQL-adattípusból konvertálja az adatokat a megadott SQL-adattípusra. A KONVERTÁLÁS függvény szintaxisa:

CONVERT(value_exp,data_type)

ahol a value_exp egy oszlopnév, egy másik skaláris függvény eredménye vagy egy literális érték, és data_type egy olyan kulcsszó, amely megfelel a D. függelékben meghatározott SQL-adattípus-azonosító által használt #define névnek. A következő SQL-utasítás például a CONVERT függvényt használja annak biztosításához, hogy a CURDATE függvény kimenete dátum legyen időbélyeg vagy karakteradatok helyett:

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

Annak megállapításához, hogy egy adatforrás mely skaláris függvényeket támogatja, egy alkalmazás meghívja az SQLGetInfo-t a SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS és SQL_TIMEDATE_FUNCTIONS beállításokkal. Annak megállapításához, hogy a KONVERTÁLÁS függvény mely konverziós műveleteket támogatja, egy alkalmazás meghívja az SQLGetInfo-t az SQL_CONVERT kezdődő beállítások bármelyikével.