"INSERT EXEC 语句不能嵌套", 如何解决?

badhorse 2003-12-29 03:02:59
我写了3个存储过程:
procedure a
begin
...
insert #t exec b
end

procedure b
begin
...
insert #t exec c
select * from #t
end

procedure c
begin
...
select * from table1
end

在查询分析器中执行a,会出现错误信息"INSERT EXEC 语句不能嵌套", 如何解决?
...全文
764 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
badhorse 2003-12-29
  • 打赏
  • 举报
回复
谢谢各位,我之所以这样写也只是为了使程序的结构更好一些,既然sql server不允许那些只好写在一层里了。
zjcxc 元老 2003-12-29
  • 打赏
  • 举报
回复
唯一的办法就是修改存储过程,使它不嵌套
zjcxc 元老 2003-12-29
  • 打赏
  • 举报
回复
这是SQL本身的限制,没办法突破.你只能采用不嵌套的方法.
火电 2003-12-29
  • 打赏
  • 举报
回复
对阿
卸在一个存储过程一定可以的
象一楼那样不知道可不可以
gmlxf 2003-12-29
  • 打赏
  • 举报
回复
或者:
create procedure a
as
begin
...
insert #t exec b
end

create procedure b
as
begin
...
insert #t select * from table1
select * from #t
end

gmlxf 2003-12-29
  • 打赏
  • 举报
回复
exec('insert #t '+c)----改这里,同理修改procedure a过程也行
--
这样可以吗?不知道,好象不行吧,如果是'insert #t select 1,1..'这样的是可以,如果是
'insert #t exec c'呢?

楼主可以
create procedure a
as
begin
...
insert #t exec c
insert #t exec b
end

create procedure b
as
begin
...
select * from #t
end

wzh1215 2003-12-29
  • 打赏
  • 举报
回复
上面的不行!
wzh1215 2003-12-29
  • 打赏
  • 举报
回复
procedure a
begin
...
insert #t exec b
end

procedure b
begin
...
exec('insert #t '+c)----改这里,同理修改procedure a过程也行
select * from #t
end

procedure c
begin
...
select * from table1
end

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧