Je souhaite avoir une construction dans une procédure stockée qui définit une table temporaire d'une manière dans une branche d'un if-else et d'une autre manière dans l'autre branche, mais cela ne compilera pas b/c il dit que la table est déjà créée. J'imagine quelque chose comme ce qui suit:déclaration de la table temporaire dans les deux branches d'un serveur SQL stocké conditionnel conditionnel
if
begin
IF OBJECT_ID(N'tempdb..#tbl') IS NOT NULL DROP TABLE #tbl
create table #tbl (A int, B int)
end
else
begin
IF OBJECT_ID(N'tempdb..#tbl') IS NOT NULL DROP TABLE #tbl
create table #tbl (A int, B int, C int)
end
qui semble devoir être bien défini.
Existe-t-il une meilleure façon de le faire que de le déclarer vide, puis de le modifier à plusieurs reprises pour ajouter les colonnes que je veux dans les branches? (C'est juste un peu moche)
Je voudrais vraiment examiner pourquoi vous avez besoin de le faire du tout. –
Je génère automatiquement des tableaux croisés dynamiques pour une page Web dont le nombre de colonnes varie en fonction des boutons qu'ils touchent. Pour ce faire sans dupliquer le code, j'utilise cette construction pour configurer la table de données de pivot –
Pour les requêtes pivot, j'utilise généralement SQL dynamique pour construire une instruction en utilisant le mot clé PIVOT (2005 et ultérieur). Ceci est purement pour activer un nombre variable de colonnes, puisque le pivotement nécessite que vous spécifiez le nombre exact de colonnes. C'est dommage, mais c'est comme ça, et SQL dynamique fonctionne plutôt bien dans ce cas. – ulty4life