Ho ottenuto il seguente stored procedureCome si può denominare le tabelle del set di dati che si restituiscono in un processo memorizzato?
Create procedure psfoo()
AS
select * from tbA
select * from tbB
che sto quindi l'accesso ai dati in questo modo:
Sql Command mySqlCommand = new SqlCommand("psfoo" , DbConnection)
DataSet ds = new DataSet();
mySqlCommand.CommandType = CommandType.StoredProcedure;
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
mySqlDataAdapter.SelectCommand = mySqlCommand;
mySqlDataAdapter.Fill(ds);
Ora, quando ho voglia di accedere alle mie tabelle, devo fare questo:
DataTable datatableA = ds.Tables[0];
DataTable datatableB = ds.Tables[1];
la proprietà set di dati tabelle anche avuto una funzione di accesso da stringa (invece di int).
E 'possibile quindi specificare il nome delle tabelle nel codice SQL, in modo che possa invece scrivere questo:
DataTable datatableA = ds.Tables["NametbA"];
DataTable datatableB = ds.Tables["NametbB"];
sto usando SQL Server 2008, se questo fa la differenza.
Ottima domanda. Peccato che dalle risposte, sembra che questo non sia realmente possibile. Sarebbe una buona caratteristica poter fornire un alias a una query in una procedura e utilizzarla come TableName per il DataTable risultante. Fa schifo dover fare affidamento sull'ordine in cui le query vengono eseguite all'interno della procedura, dal momento che qualcuno potrebbe modificare la procedura in futuro e interrompere involontariamente il codice. – Jim
@Jim vedi la risposta di Ramzan. Oltre a far sì che Microsoft aggiunga la possibilità di denominare tabelle da SP, questa sembra la strada da percorrere, soprattutto se si sta eseguendo il wrapping del codice di accesso ai dati in una classe di utilità come fa la mia squadra. –