Jakieś pomysły, dlaczego następująca linia narzeka, że DATEPART nie jest zdefiniowana jako identyfikator?
IF DATEPART(v_ExpireTime, year) = 1899 THEN v_ExpireTime := NULL;
Zwraca: Error(68,10): PLS-00201: identifier 'DATEPART' must be declared
EDYCJA: Nieważne, znalazłem odpowiedź. Teraz robię:
IF to_number(to_char(v_ExpireTime, 'YY')) = 1899 THEN v_ExpireTime := NULL;
2 odpowiedzi
Jak już odkryłeś, DATEPART
jest funkcją SQL Server, a nie Oracle. Pokazana przez Ciebie alternatywa, to_number(to_char(v_ExpireTime, 'YY'))
, da Ci jednak dwucyfrową wartość, więc jeśli część roku Twojej daty to 1899
, zwróci tylko 99
, więc wygrałeś nie pasuje. Możesz użyć czterocyfrowego modelu daty roku YYYY
zamiast YY
.
Inną opcją jest użycie funkcji wyodrębniania:
IF extract(year from v_ExpireTime) = 1899 THEN ...
Jeśli mam rację, to dlatego, że DatePart nie jest częścią biblioteki PLSQL, więc nie wie, co robisz. Druga metoda dotyczy PLSQL.
Podobne pytania
Nowe pytania
oracle
Oracle Database to wielomodelowy system zarządzania bazami danych stworzony przez Oracle Corporation. NIE używaj tego znacznika w przypadku innych produktów należących do Oracle, takich jak Java i MySQL.