J'ai une requête MS SQL CTE à partir de laquelle je souhaite créer une table temporaire. Je ne sais pas comment le faire car cela donne une Invalid Object name
erreur.
Vous trouverez ci-dessous toute la requête pour référence
SELECT * INTO TEMPBLOCKEDDATES FROM
;with Calendar as (
select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, EventStartDate as PlannedDate
,EventType from EventCalender
where EventActive = 1 AND LanguageID =1 AND EventBlockDate = 1
union all
select EventID, EventTitle, EventStartDate, EventEndDate, EventEnumDays,EventStartTime,EventEndTime, EventRecurring, dateadd(dd, 1, PlannedDate)
,EventType from Calendar
where EventRecurring = 1
and dateadd(dd, 1, PlannedDate) <= EventEndDate
)
select EventID, EventStartDate, EventEndDate, PlannedDate as [EventDates], Cast(PlannedDate As datetime) AS DT, Cast(EventStartTime As time) AS ST,Cast(EventEndTime As time) AS ET, EventTitle
,EventType from Calendar
where (PlannedDate >= GETDATE()) AND ',' + EventEnumDays + ',' like '%,' + cast(datepart(dw, PlannedDate) as char(1)) + ',%'
or EventEnumDays is null
order by EventID, PlannedDate
option (maxrecursion 0)
J'apprécierais un point dans la bonne direction ou si je peux créer une table temporaire à partir de cette requête CTE
sql
sql-server
common-table-expression
Apprentissage
la source
la source
Réponses:
Exemple de DDL
Assurez-vous que le tableau est supprimé après utilisation
la source
En réalité, le format peut être assez simple - parfois il n'est pas nécessaire de prédéfinir une table temporaire - il sera créé à partir des résultats de la sélection.
Donc, à moins que vous ne vouliez des types différents ou que vous soyez très strict sur la définition, gardez les choses simples. Notez également que toute table temporaire créée dans une procédure stockée est automatiquement supprimée lorsque la procédure stockée termine son exécution. Si la procédure stockée A crée une table temporaire et appelle la procédure stockée B, B pourra utiliser la table temporaire créée par A.
Cependant, il est généralement considéré comme une bonne pratique de codage de supprimer explicitement chaque table temporaire que vous créez de toute façon.
la source
select * into #temp
mais, la deuxième fois l'exécution délivre une erreur: "La table #temp existe déjà dans la base de données" .Les
SELECT ... INTO
besoins doivent être dans la sélection du CTE.la source
Comment utiliser TempTable dans une procédure stockée?
Voici les étapes:
CRÉER UNE TABLE DE TEMPÉRATURE
INSÉRER LES DONNÉES DE SÉLECTION DE TEMPÉRATURE DANS LE TABLEAU DE TEMP
SELECT TEMP TABLE (Vous pouvez maintenant utiliser cette requête de sélection)
ÉTAPE FINALE DÉPOSEZ LA TABLE
J'espère que cela aidera. Simple et clair :)
la source
Ici, en utilisant la clause into, la table est directement créée
la source
Voici une légère modification des réponses d'une requête qui crée la table lors de l'exécution (c'est-à-dire que vous n'avez pas à créer la table au préalable):
la source