2009-02-13 17 views
2

J'ai une table temporaire qui a besoin des valeurs d'une procédure stockée. Ainsi, le SP insère 3 colonnes dans la table temporaire, puis je souhaite ajouter un datetime à chaque ligne sans modifier le SP.Puis-je insérer dans une table temporaire le résultat d'une procédure stockée plus une autre valeur?

Depuis que j'appelle le SP 3 fois, chaque fois avec un datetime différent, je ne peux pas simplement mettre à jour toute la table de temp.

Avez-vous des suggestions?

DECLARE @temp TABLE 
(
    id INT IDENTITY(1,1), 
    Name VARCHAR(150), 
    Address VARCHAR(25), 
    Date DATETIME 
) 

WHILE (@count>[email protected]) 
BEGIN 
    SET @date=DATEADD(dd, @count, GETDATE()) 
    INSERT INTO @temp (Name,Address) 
     EXEC[dbo][email protected] 

--I Want to check for Null and insert the date there 
    Update @temp SET [email protected] WHERE Date='' 

    SET @[email protected] 
+0

Pouvez-vous poster un exemple de la façon dont vous faites maintenant? –

+0

S'il vous plaît ajouter quelques exemples de données: comment appelez-vous le SP et que voulez-vous voir. – Quassnoi

+0

@Mitchel Sellers: de seconde en seconde! – Quassnoi

Répondre

2

Oui. Créez la table temporaire et dans la colonne de date ajoutée qui n'a pas de représentation de votre sproc, mettez une contrainte de valeur par défaut de getdate() ou n'importe quelle formule de date dont vous avez besoin. Dans l'instruction insert, spécifiez explicitement les colonnes et omettez la colonne de date et cela devrait fonctionner. Au fur et à mesure que les lignes sont ajoutées, la contrainte de valeur par défaut va entrer et remplir cette colonne pour vous.

exemple:

create table #tmp (c1 int, c2 int, dt datetime default(getdate())) 

insert into #tmp 
(c1, c2) 
exec mysproc 
+0

Merci .... Je l'ai modifié juste un peu. J'ai mis la date par défaut ... puis j'ai mis à jour la date par défaut avec celle que je voulais insérer à chaque itération de la boucle. – seFausto

Questions connexes