Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Stored procedure, passa il nome della tabella come parametro

Dynamic SQL è l'unico modo per farlo, ma riconsidererei l'architettura della tua applicazione se lo richiede. SQL non è molto bravo con il codice "generalizzato". Funziona meglio quando è progettato e codificato per svolgere attività individuali.

Selezionare da TableA non equivale a selezionare da TableB, anche se le istruzioni select hanno lo stesso aspetto. Potrebbero esserci indici diversi, dimensioni delle tabelle diverse, distribuzione dei dati, ecc.

È possibile generare le proprie procedure memorizzate individuali, che è un approccio comune. Avere un generatore di codice che crea le varie stored procedure selezionate per le tabelle di cui hai bisogno. Ogni tabella avrà i suoi SP, che potresti quindi collegare alla tua applicazione.

Ho scritto questo tipo di generatori in T-SQL, ma potresti farlo facilmente con la maggior parte dei linguaggi di programmazione. È roba piuttosto semplice.

Solo per aggiungere un'altra cosa da quando Scott E ha sollevato gli ORM... dovresti anche essere in grado di utilizzare queste procedure memorizzate con gli ORM più sofisticati.