探讨Insert...Execute

 在这里有一项非常重要的技巧要告诉大家,那就是如果存储过程中是以SELECT或READTEXT表达式返回查询结果,则您可以使用下列表达式将存储过程所返回的查询结果添加到一个表中:

Insert table_name Exec procedure_name

例子:

 --创建存储过程dbo.SalaryOverview
CREATE PROCEDURE dbo.SalaryOverview
AS
SELECT 部门,
       性别=CASE 员工性别
            WHEN 0 THEN '女'
            WHEN 1 THEN '男'
            end,
       婚姻状况=CASE 婚姻状况
                WHEN 0 THEN '未婚'
                WHEN 1 THEN '已婚'
            end,
       最低薪水=MIN(目前薪水),
       最高薪水=MAX(目前薪水),
       平均薪水=AVG(目前薪水)
FROM 飞狐工作室
GROUP BY 部门,
         case 员工性别
           when 0 then '女'
           when 1 then '男'
          end,
         case 婚姻状况
           when 0 then '未婚'
           when 1 then '已婚'
         END
order by 部门;
GO

--先将IncomeOverview表中的数据记录删除
DELETE IncomeOverview;
GO

--将存储过程SalaryOverview所返回的结果添加到表IncomeOverview
INSERT IncomeOverview EXECUTE SalaryOverview;
GO

SELECT * FROM IncomeOverview;
GO

posted @ 2009-07-27 20:29  fxair  阅读(174)  评论(0)    收藏  举报