关闭

存储过程中调用另一个存储过程的结果集

标签: 存储insertsql serverc
1634人阅读 评论(0) 收藏 举报
分类:

在一个存储过程中把另一个存储过程当一个表来使用,在sql server中不支持直接从from后接存储过程。这个时候我们可以利用临时表来实现。

举例:

 SELECT ID, RoleId, RoleType into #TempPurviewTableContainer  FROM SystemPurview  WHERE 1=0
 
 INSERT #TempPurviewTableContainer exec PManage_GetPurview @Type,@Id
 
 select * from #TempPurviewTableContainer

需要注意的是,这种方法不能嵌套。例如:

  procedure   a  
  begin  
      ...  
      insert   #table   exec   b  
  end  
   
  procedure   b  
  begin  
      ...  
      insert   #table    exec   c  
      select   *   from   #table     
  end  
   
  procedure   c  
  begin  
      ...  
      select   *   from   sometable   
  end  

这里a调b的结果集,而b中也有这样的应用b调了c的结果集,这是不允许的,会报“INSERT EXEC 语句不能嵌套”错误。在实际应用中要避免这类应用的发生。如果谁有好的解决方法,请留言!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:126668次
    • 积分:2001
    • 等级:
    • 排名:第19311名
    • 原创:63篇
    • 转载:20篇
    • 译文:0篇
    • 评论:24条
    最新评论