Chciałbym użyć procedury ASSERT funkcjonalnie podobnej do tej znalezionej w innych językach, tj. Konstrukcji (czy to procedury, składni ...)
ASSERT( <condition>, <msg>)
tak, że gdy <condition>
przekazany w pierwszym argumencie argument ma wartość false, zgłaszany jest wyjątek z określonym <msg>
komunikatem opisowym.
Wiem, że jest to trywialne zrobić ręcznie, ale pytam, czy istnieje standardowy z DBMS.
Konieczność napisania własnego lub zaimportowania jednego z pakietów 3rdy party byłaby niepraktyczna, ponieważ musiałbym być całkowicie przenośny i przejrzysty dla każdego projektu, nad którym pracuję.
oracle
error-handling
użytkownik881430
źródło
źródło
Odpowiedzi:
Nie ma wbudowanej procedury asercji w SQL lub PL / SQL, więc będziesz musiał napisać własną.
Można to zrobić na dwa sposoby. Możesz albo ręcznie zgłosić wyjątek, jak omówiono w tym artykule Oracle , lub napisać opakowanie dla
raise_application_error
procedury, które jest udokumentowane w sekcji obsługi wyjątków Oracle w dokumentacji.Dodam, że wyjątki zostały zaprojektowane dla tego rodzaju scenariusza, więc lepiej byłoby na chwilę zdjąć czapkę programisty i użyć czapki DBA :)
źródło
Wbudowany pakiet DBMS_ASSERT to wąsko zakrojona wersja tego, czego szukasz. W przypadku innych twierdzeń, że Phil ma rację, będziesz musiał zbudować własny. Oto prosty przykład drugiej opcji w odpowiedzi Phila +1 :
źródło