Table paramteree dans un SELECT dans une stored procedure ?
Bonjour a tous et merci de votre temps et de votre aide.
Je debute en MS SQL Server et j'ai une application avec 2 tables qui ont exactement les memes champs (note : je dois conserver les 2 tables).
Quand j'interroge l'une generalement j'interroge l'autre.
Dans une strored procdure voici que j'ai fait pour un de mes traitements.
Ceci est un exemple mais j'ai le cas tres souvant dans mon appli.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| SELECT
T.Trip#,
Cast(T.DatePosted as DATETIME) AS DateCriteria,
(CASE WHEN C.[FollowUpNo] IS NULL AND T.[FollowUp_No]=0 THEN 2 -- It is a 0, so at least 2 notices have been sent
ELSE CASE WHEN C.[Level] = 1 THEN 1 -- 1st specified follow up
ELSE CASE WHEN C.[Level] > 1 THEN 2 -- 2nd or more specified follow up
END
END
END) as NoticeNumber
FROM MY_DATA AS T
LEFT JOIN #TEMP_Config as C
ON T.[Region] = C.[Region]
AND T.[Application] = C.[Source]
AND T.[FollowUp_No] = C.[FollowUpNo]
WHERE ISDATE(T.DatePosted)=1
AND (CAST(T.DatePosted as DATETIME) BETWEEN @StartDate AND @EndDate)
AND T.[FollowUp_No] IS NOT NULL |
Et la seule difference est ici :
ou je vais changer les noms pour MY_DATA_AutreNom et actuellement ce que je fais c'est recopier le code et le modifier.
Ce que j'aimerai et ce sans me retrouver avec une quirielle d'objets dans ma BD c'est avoir la possibilite de passer le nom de la table en parametre.
Avoir quelque chose comme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| SELECT
T.Trip#,
Cast(T.DatePosted as DATETIME) AS DateCriteria,
(CASE WHEN C.[FollowUpNo] IS NULL AND T.[FollowUp_No]=0 THEN 2 -- It is a 0, so at least 2 notices have been sent
ELSE CASE WHEN C.[Level] = 1 THEN 1 -- 1st specified follow up
ELSE CASE WHEN C.[Level] > 1 THEN 2 -- 2nd or more specified follow up
END
END
END) as NoticeNumber
FROM {{{Ici_La_Table}}} AS T
LEFT JOIN #TEMP_Config as C
ON T.[Region] = C.[Region]
AND T.[Application] = C.[Source]
AND T.[FollowUp_No] = C.[FollowUpNo]
WHERE ISDATE(T.DatePosted)=1
AND (CAST(T.DatePosted as DATETIME) BETWEEN @StartDate AND @EndDate)
AND T.[FollowUp_No] IS NOT NULL |
Que recommandez-vous ?
A+