Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Skalární funkce vrací hodnotu pro každý řádek. Například skalární funkce absolutní hodnoty přebírá jako argument číselný sloupec a vrací absolutní hodnotu každé hodnoty ve sloupci. Řídicí sekvence pro volání skalární funkce je
{fnscalar-function}
kde skalární funkce je jednou z funkcí uvedených v dodatku E: Skalární funkce. Více informací o únikové sekvenci skalární funkce najdete v dodatku C: Gramatika SQL, v části Řídicí sekvence skalární funkce.
Například následující příkazy SQL vytvoří stejnou sadu výsledků s velkými názvy zákazníků. První příkaz používá syntaxi escape sekvence. Druhý příkaz používá nativní syntaxi pro Ingres pro OS/2 a není interoperabilní.
SELECT {fn UCASE(Name)} FROM Customers
SELECT uppercase(Name) FROM Customers
Aplikace může kombinovat volání skalárních funkcí, které používají nativní syntaxi a volání skalárních funkcí, které používají syntaxi ODBC. Předpokládejme například, že jména v tabulce Zaměstnanec se ukládají jako příjmení, čárka a křestní jméno. Následující příkaz SQL vytvoří sadu příjmení zaměstnanců v tabulce Zaměstnanec. Příkaz používá skalární funkci ODBC SUBSTRING a skalární funkci SQL Serveru CHARINDEX a provede se správně pouze na SQL Serveru.
SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers
Pro maximální interoperabilitu by aplikace měly použít skalární funkci CONVERT , aby se zajistilo, že výstup skalární funkce je požadovaný typ. Funkce CONVERT převede data z jednoho datového typu SQL na zadaný datový typ SQL. Syntaxe funkce CONVERT je
CONVERT(value_exp;data_type)
kde value_exp je název sloupce, výsledek jiné skalární funkce nebo literálové hodnoty a data_type je klíčové slovo, které odpovídá názvu #define používanému identifikátorem datového typu SQL, jak je definováno v dodatku D: Datové typy. Například následující příkaz SQL používá funkci CONVERT , aby se zajistilo, že výstup funkce CURDATE je datum místo časového razítka nebo znakových dat:
INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)
VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)
Pokud chcete určit, které skalární funkce jsou podporovány zdrojem dat, aplikace volá SQLGetInfo s možnostmi SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS a SQL_TIMEDATE_FUNCTIONS. Chcete-li zjistit, které převodní operace jsou podporovány funkcí CONVERT , aplikace volá SQLGetInfo s některou z možností, které začínají SQL_CONVERT.