Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcje skalarne zwracają wartość dla każdego wiersza. Na przykład funkcja skalarna wartości bezwzględnej przyjmuje kolumnę liczbową jako argument i zwraca wartość bezwzględną każdej wartości w kolumnie. Sekwencja ucieczki do wywoływania funkcji skalarnej to
{fnscalar-function}
gdzie funkcja skalarna jest jedną z funkcji wymienionych w dodatku E: funkcje skalarne. Aby uzyskać więcej informacji na temat sekwencji ucieczki funkcji skalarnych, zobacz Scalar Function Escape Sequence in Appendix C: SQL Grammar ( Sekwencja ucieczki funkcji skalarnych w dodatku C: gramatyka SQL).
Na przykład, następujące instrukcje SQL tworzą ten sam zestaw wyników, wyświetlający nazwy klientów wielkimi literami. Pierwsza instrukcja używa składni escape-sequence. Druga instrukcja używa natywnej składni Ingres dla OS/2 i nie jest interoperacyjna.
SELECT {fn UCASE(Name)} FROM Customers
SELECT uppercase(Name) FROM Customers
Aplikacja może łączyć wywołania funkcji skalarnych, które używają składni natywnej i wywołań do funkcji skalarnych korzystających ze składni ODBC. Załóżmy na przykład, że nazwy w tabeli Employee są przechowywane jako nazwisko, przecinek i imię. Poniższa instrukcja SQL tworzy zestaw wyników nazwisk pracowników w tabeli Employee. Instrukcja używa funkcji skalarnych ODBC SUBSTRING i funkcji skalarnych programu SQL Server CHARINDEX i będzie działać poprawnie tylko w programie SQL Server.
SELECT {fn SUBSTRING(Name, 1, CHARINDEX(',', Name) - 1)} FROM Customers
W celu maksymalnej współdziałalności aplikacje powinny używać funkcji skalarnej CONVERT, aby upewnić się, że wynik funkcji skalarnej jest odpowiedniego typu. Funkcja CONVERT konwertuje dane z jednego typu danych SQL na określony typ danych SQL. Składnia funkcji CONVERT jest następująca:
CONVERT(value_exp,data_type)
gdzie value_exp jest nazwą kolumny, wynikiem innej funkcji skalarnej lub wartości literału, a data_type jest słowem kluczowym odpowiadającym nazwie #define używanej przez identyfikator typu danych SQL zgodnie z definicją w dodatku D: Typy danych. Na przykład następująca instrukcja SQL używa funkcji CONVERT , aby upewnić się, że dane wyjściowe funkcji CURDATE są datą zamiast znacznika czasu lub danych znaków:
INSERT INTO Orders (OrderID, CustID, OpenDate, SalesPerson, Status)
VALUES (?, ?, {fn CONVERT({fn CURDATE()}, SQL_DATE)}, ?, ?)
Aby określić, które funkcje skalarne są obsługiwane przez źródło danych, aplikacja wywołuje element SQLGetInfo z opcjami SQL_CONVERT_FUNCTIONS, SQL_NUMERIC_FUNCTIONS, SQL_STRING_FUNCTIONS, SQL_SYSTEM_FUNCTIONS i SQL_TIMEDATE_FUNCTIONS. Aby określić, które operacje konwersji są obsługiwane przez funkcję CONVERT , aplikacja wywołuje element SQLGetInfo z dowolną opcją rozpoczynającą się od SQL_CONVERT.