2012-03-06 15 views
11

Obecnie pracuję nad aplikacją portalu dla restauracji. Używana baza danych jest Mysql i używam Spring JDBC do pisania logiki dostępu do danych.Jak utworzyć tymczasowe procedury w MySQL?

Niektóre z moich DAO są zaśmiecone wieloma pytaniami i uzyskują do tysiąca linii kodu. Myślę, że mogę zmniejszyć rozmiar i złożoność, przenosząc część mojej logiki do procedury SQL-PSM (ponieważ wiązanie danych i kod klejowy w Javie jest obrzydliwością z piekła).

Jednak nie mam uprawnień DDL na Db, a tym samym nie mogę utworzyć procedury.

Zastanawiam się, czy istnieje sposób na stworzenie odstraszającej \ tymczasowej procedury, którą można wykonać bezpośrednio, jak w oświadczeniu DML bez konieczności jej wcześniejszego tworzenia.

tj. Chcę procedurę minus słowo kluczowe create, które wykonałoby moją pracę, zwróci wynik i zniknie.

Googled to dużo, ale nie mógł znaleźć niczego. : '(Zastanawiam się tylko, czy znacie Państwo eleganckie rozwiązanie:

+1

Nie mam nawet wypowiedzieć się na temat włączania PSM w Db, nie mówiąc już o tym, aby zespół przyjął ORM. :-(Postanowiłem zmniejszyć złożoność za pomocą innych środków, takich jak uzewnętrznienie moich zapytań w oddzielne wiosenne pliki konfiguracyjne, itd. W każdym razie dziękuję za wszystkie odpowiedzi. :-) –

+0

Czy próbowałeś wykonywania instrukcji SQL z pliku tekstowego [link] (http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html) –

Odpowiedz

11

Chyba szukasz anonimowych bloków/kod anonimowych procedur. Niestety to nie jest obsługiwana w MySQL (jest obsługiwana w „dużym” RDBMSs takich jak Oracle lub Sybase)

Zastanowiłabym się nad wykorzystaniem niektórych frameworków ORM, ale nie jestem programistą Java, więc nie mogę polecić żadnego z nich.

+0

Dokładnie! Anonimowe bloki kodu. Smutno słyszeć, że mysql nie ma dla nich wsparcia ... :-(Zastanawiasz się, co zrobić z moimi spaghetti DAO –

+1

Nadal możesz korzystać z regularnych procedur, aby wykonać część pracy, jeśli możesz je wcześniej utworzyć. – Salandur

2

Nie sądzę, że możecie, moim zaleceniem byłoby stworzenie "procedury składowanej" w Javie. Napisz metodę, która pobiera twoje dane wejściowe, wykonuje zapytania i obliczenia, a następnie zwraca zestaw danych.

+0

To nie jest problem. Mam już działający kod w Javie. Chodzi o to, że Java nie może konkurować z SQL-PSM, jeśli chodzi o manipulację danymi w relacyjnych tabelach. Kod można zmniejszyć do połowy jego wielkości. –

+0

@MonikaMichael Nadal możesz manipulować danymi po stronie DB, uruchamiając zapytania, prawda? Wystarczy zawijać zapytania w metodzie Java zamiast MySQL SP. Nie wiem zbyt wiele o JDBC, którego używasz, ale każda nowoczesna abstrakcja DB powinna zawierać obsługę wielu zapytań. –

Powiązane problemy