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
Nome tabella da una variabile
martedì 15 ottobre 2013 - 13.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mar 15 ott 2013 - 13:37
So che chiedo una cosa un po' strana.
Ho la necessità di creare una tabella nel TempDB che ha per nome un GUID, questo per permettere a più utenti in contemporanea di fare dei calcoli particolari su dei record utilizzando dei jion, farlo in c# è semplicissimo ma in T-SQL non lo so, faccio un esempio
Declare @Table as char(36) = Cast(NEWID() as char (36));
Create Table tempdb.dbo.@Table
(
Campo1 bigint,
Campo1 varchar(20)
);
a questo poi naturalmente devono seguire degli insert, join con altre tabelle ed infine un drop
è possibile questo oppure devo continuarlo a fare in C#
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 15 ott 2013 - 15:10
Ciao
>Ho la necessità di creare una tabella nel TempDB che ha per nome
>un GUID, questo per permettere a più utenti in contemporanea
>di fare dei calcoli particolari su dei record utilizzando dei jion
>è possibile questo oppure devo continuarlo a fare in C#
quindi i record sono condivisi da tutti? Oppure ognuno ne consuma solo la sua parte?
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mer 16 ott 2013 - 08:31
E' una tabella momentanea di alcuni record, viene popolata, effettuati dei calcoli e poi eliminata, la tabella esiste solo in questo momento solo in quel momento e non più utilizzabile in futuro
Considera che il tutto viene fatto da un servizio chiamato da un client, quindi l'accesso per il motore database è sempre dello stesso utente (di database).
C'è un modo per non lanciare il tutto dal servizio???
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 16 ott 2013 - 09:25
>E' una tabella momentanea di alcuni record, viene popolata, effettuati
>dei calcoli e poi eliminata, la tabella esiste solo in questo
>momento solo in quel momento e non più utilizzabile in futuro
>Considera che il tutto viene fatto da un servizio chiamato da
>un client, quindi l'accesso per il motore database è sempre dello
>stesso utente (di database).
Sì ma deve essere acceduta da più connessioni?
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mer 16 ott 2013 - 13:16
No accetta solo la connessione corrente
In caso di più utenti verrà creata un'altra tabella.
Ho pensato di farla così:
begin tran t1
declare @name as varchar(50) = cast(NEWID() as char(36) );
declare @sql as varchar(500)
set @sql = 'create table [' + @name + '] (Campo1 smallint, Campo2 varchar(50))';
exec (@sql)
set @sql = 'insert into [' + @name + '] (Campo1, Campo2) values (1, ''Prova 1''),'
+' (2, ''Prova 2''),'
+' (3, ''Prova 3'')';
exec (@sql)
set @sql = 'select * from [' + @name + ']';
exec (@sql)
rollback tran t1
senza la transazione inserisco queste righe
set @sql = 'drop table [' + @name + ']';
exec (@sql
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 16 ott 2013 - 13:25
>No accetta solo la connessione corrente
>In caso di più utenti verrà creata un'altra tabella.
ma scusa allora sfrutta il tempdb..
crea una tabella #qualcosa che muore con la sessione.
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
mer 16 ott 2013 - 15:27
>>No accetta solo la connessione corrente
>>In caso di più utenti verrà creata un'altra tabella.
>ma scusa allora sfrutta il tempdb..
>crea una tabella #qualcosa che muore con la sessione.
Ho provato da Management a creare una tabella
ho chiuso e riaperto il management ma la tabella resta lì
dove sbaglio???
>Alessandro Alpi | SQL Server MVP
>MCP|MCITP|MCTS|MCT
>
>
http://blogs.dotnethell.it/suxstellino
>
http://suxstellino.wordpress.com
>
http://mvp.microsoft.com/profiles/Alessandro.Alpi
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 16 ott 2013 - 15:50
>Ho provato da Management a creare una tabella
no no, non devi usare il management studio
devi scrivere la CREATE TABLE nello script SQL che vai a lanciare.
Ma ci sono vari modi, puoi usare:
- Tabella temp fisica (puoi fare più indici su di essa per velocizzare i calcoli)
CREATE TABLE #tabella (campi);
INSERT INTO #tabella(campi) Quello che vuoi...
oppure
SELECT campi INTO #tabella FROM altratabella..
- Tabella temp variabile
DECLARE @tabella TABLE (campi);
INSERT INTO @tabella (campi) Quello che vuoi...
fallo tutto dentro il tuo script SQL (o fai una stored procedure).
La tabella muore alla finedell'esecuzione (chiusura sessione).
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
http://mvp.microsoft.com/profiles/Alessandro.Alpi
dompa72
Profilo
| Senior Member
245
messaggi | Data Invio:
gio 17 ott 2013 - 13:31
Grazie
faccio delle prove
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 !