【问题标题】:Insert into table data fetched by stored procedure插入存储过程获取的表数据
【发布时间】:2017-01-18 12:18:12
【问题描述】:

我有一个存储过程,它在连接的帮助下从不同的表中获取数据。

这是它的样子

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 

正如您所见,此过程正在从不同的表中检索多个列,现在在此存储过程的末尾,我想将所有正在提取的数据插入到表 2 invoice

我需要在这里做什么?

我只想将此存储过程获取的数据插入到另一个表中,并且我想在此存储过程本身中执行此操作。

希望能让你明白

【问题讨论】:

  • 你试过INSERT EXEC吗?
  • 我想怎么做

标签: sql-server join stored-procedures select-insert


【解决方案1】:

您可以简单地在选择前添加insert into

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

【讨论】:

  • INSERT INTO...SELECT 应该没问题。我不知道您的语法错误是什么,因为我不知道您尝试的语法是什么。您应该将&lt;columns list&gt; 替换为表中的列列表,并将SELECT .... 替换为您的实际选择语句......
【解决方案2】:
INSERT INTO invoice (<<column list>>)
EXEC profinalinstexpensesonid @from=..., @to=...

请记住,为 invoice 表指定的列列表的顺序应与查询的输出相同。

查看此链接https://msdn.microsoft.com/en-us/library/ms174335.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多