Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
MYSQL - problema con Temporary Table
martedì 23 settembre 2008 - 10.56
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
AntCiar
Profilo
| Expert
934
messaggi | Data Invio:
mar 23 set 2008 - 10:56
Salve a tutti.
Ho creato una stored procedure che al suo interno crea una tabella temporanea "tab1". Ho usato il seguente codice:
Drop temporary table if exist tab1;
create temporary table tab1 select ......
successivamente utilizzo la tabella temporanea appena creata in altre istruzioni sql.
Il problema sta nel fatto che non riesco a sincronizzare la creazione e l'utilizzo della tabella temporanea.
Mi spiego meglio: ho l'impressione che dopo la chiamata a "create temporary table tab1" la tabella temporanea non è ancora creata e quando tento di utilizzarla mi va in errore (errore: unknown table tab1). Se inaftti inserisco l'istruzione SELECT 'aaaa' INTO OUTFILE 'C:\\prova.txt' la stored non va in errore perchè "do tempo" a MySql di creare la tabella.
Qualcuno sa come fare per "aspettare" la creazione della tabella temporanea? (no cicli while)
Grazie a tutti per l'aiuto.
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 23 set 2008 - 11:06
>successivamente utilizzo la tabella temporanea appena creata
>in altre istruzioni sql.
Ma queste istruzioni SQL che utilizzi le utilizzi dal codice .NET o dalla Stored Procedure ? Immagino dal codice .NET se no sarebbe comica la cosa. Non riesci a spostare la Business Logic dal codice .NET alla Stored Procedure ? Così sei sicuro che venga creata prima dell'uso delle altre istruzioni ?
>Qualcuno sa come fare per "aspettare" la creazione della tabella
>temporanea? (no cicli while)
Puoi usare Thread.Sleep(1000) per temporeggiare 1 secondo anche se non mi piace granchè come cosa. Oppure sempre un do..while anche se hai detto di no con dentro il Thread.Sleep(1000) il tutto in un try..catch in modo chè appena la tabella si rende disponibile il try viene eseguito correttamente ed esci dal ciclo.
Inoltre con lo Sleep non ti gira a realtime mangiandoti cicli di clock.
Ciao
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 23 set 2008 - 11:14
>Salve a tutti.
Ciao!
>Ho creato una stored procedure che al suo interno crea una tabella
>temporanea "tab1". Ho usato il seguente codice:
>
>Drop temporary table if exist tab1;
>create temporary table tab1 select ......
>
>successivamente utilizzo la tabella temporanea appena creata
>in altre istruzioni sql.
>Il problema sta nel fatto che non riesco a sincronizzare la creazione
>e l'utilizzo della tabella temporanea.
>Mi spiego meglio: ho l'impressione che dopo la chiamata a "create
>temporary table tab1" la tabella temporanea non è ancora creata
>e quando tento di utilizzarla mi va in errore (errore: unknown
>table tab1). Se inaftti inserisco l'istruzione SELECT 'aaaa'
>INTO OUTFILE 'C:\\prova.txt' la stored non va in errore perchè
>"do tempo" a MySql di creare la tabella.
mmmh.. non credo proprio sia un problema di tempo. Anche perchè passata l'istruzione di create, la tabella deve esistere se l'istruzione la crea.
Il problema potrebbe essere nel fatto che probabilmente se quella select non torna nulla non viene creata la tabella vuota?
Non conoscendo bene mysql non saprei dirti di più..
>Grazie a tutti per l'aiuto.
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
AntCiar
Profilo
| Expert
934
messaggi | Data Invio:
mar 23 set 2008 - 11:21
Il codice è tutto scritto nella stored e non posso spostare nulla in NET.
Mi serve creare una tabella temporanea perchè successivamente ho bisogno di scorre i dati e riga-riga effettuare altre procedure. La select che utilizzo per riempire la tabella temporanea restituisce dati. Penso che il problema del "tempo" ci sta. Infatti se metto la scrittura su file di una stringa subito dopo la creazione della tabella, la stored funziona. Se tolgo la scrittura su file la stored va in errore (unknown table tab1).
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 23 set 2008 - 11:32
>Penso che il problema del "tempo" ci sta. Infatti se metto
>la scrittura su file di una stringa subito dopo la creazione
>della tabella, la stored funziona. Se tolgo la scrittura su file
>la stored va in errore (unknown table tab1).
Sull'help c'è questo:
Note
CREATE TABLE does not automatically commit the current active transaction if you use the TEMPORARY keyword.
Fai una transazione esplicita e Committala
Dovrebbe andare tutto poi..
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !