2012-03-06 14 views
11

Attualmente sto lavorando a un'applicazione portale per un ristorante. Il database di back-end usato è Mysql e sto usando il supporto Spring JDBC per scrivere la logica di accesso ai dati.Come creare procedure temporanee in MySQL?

Alcuni dei miei DAO sono ingombri di più query e ottengono fino a migliaia di righe di codice in dimensioni. Penso di poter ridurre le dimensioni e la complessità spostando parte della mia logica in una procedura SQL-PSM (Poiché l'associazione dei dati e il codice della colla in Java è un abominio dell'inferno).

Tuttavia non ho i diritti DDL sul Db e quindi non posso creare la procedura.

Mi chiedevo se esiste un modo per creare una procedura temporanea in cui è possibile eseguire scarti che è possibile eseguire direttamente come un'istruzione DML senza doverla prima creare.

, ad esempio, voglio una procedura meno la parola chiave create, che farebbe il mio lavoro, restituirà il risultato e scomparirà.

Cercato su Google ma non ho trovato nulla. :... '(Basta chiedersi se voi gente sapete una soluzione elegante

+1

Non ho nemmeno a dire nell'abilitare gli PSM in Db, figuriamoci nel far sì che il team adotti un ORM. :-(Ho deciso di ridurre la complessità con altri mezzi come esternalizzare le mie query in file di configurazione Spring separati, ecc. Comunque grazie per tutte le risposte. :-) –

+0

Hai provato Eseguendo istruzioni SQL da un file di testo [collegamento] (http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html) –

risposta

11

Credo che siete alla ricerca di blocchi di codice anonimi/procedure anonimi. Purtroppo non è supportato in MySQL (è supportato in RDBMS "big" come Oracle o Sybase)

Vorrei prendere in considerazione l'uso di un framework ORM, ma non sono uno sviluppatore Java, quindi non posso raccomandarne nessuno

+0

Esattamente! Blocchi di codice anonimi Triste per sentire che mysql non ha supporto per loro .. :-(Mi chiedo cosa fare con i miei spaghetti DAO. –

+1

Puoi ancora usare le normali procedure per fare parte del lavoro, se hai potuto crearlo in anticipo. – Salandur

2

Io non credo che si può Il mio consiglio sarebbe quello di creare il 'stored procedure' in Java Scrivere un metodo che accetta gli ingressi, esegue query e calcoli, quindi restituisce il set di dati.

+0

Questo non è un problema. Ho già un codice funzionante in Java. Il punto è che Java non può competere con SQL-PSM quando si tratta di manipolazione dei dati nelle tabelle relazionali. Il codice può essere ridotto a metà della sua dimensione. –

+0

@MonikaMichael È ancora possibile manipolare i dati sul lato DB eseguendo query, giusto? Basta avvolgere le query in un metodo Java anziché in un MySQL SP. Non so molto del JDBC che stai usando, ma qualsiasi astrazione DB moderna dovrebbe includere il supporto multi-query. –

Problemi correlati