2017-01-18 2 views
0

J'ai une procédure stockée qui récupère des données de différentes tables à l'aide de jointures.Insertion dans la table de données récupérées par la procédure stockée

Voici à quoi il ressemble

ALTER PROCEDURE profinalinstexpensesonid 
    (@from varchar(50), 
    @to varchar(50), 
    @trainer varchar(50), 
    @sonvinid varchar(50) 
    )   
AS    
BEGIN    
    SELECT 
     instructoreexpense.sonvinid, 
     CONVERT(VARCHAR, sonvininsert.date, 105) AS date, 
     sonvininsert.brandname,    
     SUBSTRING(sonvininsert.zone, 1, 1) AS zone,    
     sonvininsert.location,    
     sonvininsert.area,    
     companysonvinunitvenue.venuename,    
     sonvininsert.venue,    
     sonvininsert.instructore,    
     sonvininsert.trainingno,    
     instructoreexpense.amount,    
     finalinstructoreexpense.amount AS amount1,    
     finalinstructoreexpense.utno,    
     finalinstructoreexpense.paymentid,    
     CONVERT(VARCHAR, finalinstructoreexpense.issuedate, 105) AS issuedate 
    FROM 
     instructoreexpense    
    LEFT OUTER JOIN 
     sonvininsert ON sonvininsert.sonvinid = instructoreexpense.sonvinid 
        AND sonvininsert.status = '0'     
    LEFT OUTER JOIN 
     finalinstructoreexpense ON finalinstructoreexpense.sonvinid = instructoreexpense.sonvinid     
    LEFT OUTER JOIN 
     companysonvinunitvenue ON companysonvinunitvenue.id = sonvininsert.comsonvinid       
    WHERE 
     sonvininsert.date BETWEEN CONVERT(DATETIME, @from, 105) 
           AND CONVERT(datetime, @to, 105)  
     AND sonvininsert.trainer = (SELET empname 
            FROM trainerdetails 
            WHERE trid = @trainer) 
     AND instructoreexpense.sonvinid NOT IN (SELECT CAST(Item AS INTEGER) 
               FROM SplitString(@sonvinid, ',')) 
    ORDER BY 
     instructoreexpense.sonvinid 
END 

Comme vous pouvez le voir cette procédure récupère plusieurs colonnes de différentes tables, maintenant à la fin de cette procédure stockée, je veux insérer toutes les données qui est en cours de récupération dans le tableau 2 invoice.

Que dois-je faire ici? Je veux juste insérer les données récupérées par cette procédure stockée dans une autre table, et je veux le faire dans cette procédure stockée elle-même.

J'espère que je suis capable de vous faire comprendre

+0

Avez-vous essayé 'INSERT EXEC'? – DVT

+0

comment je suppose de le faire –

Répondre

0

Vous pouvez simplement mettre un insert into avant la sélection:

INSERT INTO invoice (<Columns list>) 
SELECT .... 
+0

Syntaxe incorrecte près du mot-clé 'select'. –

+0

pouvez-vous me dire comment je peux le faire ??? –

+0

INSERT INTO ... SELECT devrait être bon. Je ne sais pas quelle est votre erreur de syntaxe puisque je ne sais pas quelle est la syntaxe que vous avez essayé. vous devriez remplacer '' par la liste des colonnes de votre table et 'SELECT ....' par votre instruction actuall select .... – ATC

0
INSERT INTO invoice (<<column list>>) 
EXEC profinalinstexpensesonid @from=..., @to=... 

Rappelez-vous que l'ordre de la liste des colonnes spécifiée pour la table de la facture doit être la même chose que la sortie de la requête.

Vérifiez ce lien https://msdn.microsoft.com/en-us/library/ms174335.aspx