sql >> Databasteknik >  >> RDS >> Sqlserver

Lagrad procedur, skicka tabellnamnet som en parameter

Dynamisk SQL är det enda sättet att göra detta, men jag skulle ompröva arkitekturen för din applikation om den kräver detta. SQL är inte särskilt bra på "generaliserad" kod. Det fungerar bäst när det är designat och kodat för att utföra enskilda uppgifter.

Att välja från TabellA är inte detsamma som att välja från TabellB, även om urvalssatserna ser likadana ut. Det kan finnas olika index, olika tabellstorlekar, datadistribution etc.

Du kan generera dina individuella lagrade procedurer, vilket är ett vanligt tillvägagångssätt. Ha en kodgenerator som skapar de olika utvalda lagrade procedurerna för de tabeller du behöver. Varje tabell skulle ha sina egna SP, som du sedan kan länka till din applikation.

Jag har skrivit den här typen av generatorer i T-SQL, men du kan enkelt göra det med de flesta programmeringsspråk. Det är ganska grundläggande grejer.

Bara för att lägga till en sak till sedan Scott E tog upp ORMs... du borde också kunna använda dessa lagrade procedurer med de flesta sofistikerade ORMs.



  1. Lista alla kolumner som refereras till i alla procedurer i alla databaser

  2. PHP vs MySQL-prestanda (om , fungerar) i fråga

  3. Passera PHP Array via jQuery Ajax

  4. Skapa inmatningsfält dynamiskt med värden och kolumnnamn från databasen