2005可以运行,但2000不能运行的语句.求解答..

xiaoZZzz 2007-11-21 02:05:54

create procedure x1
as
declare @t table(a1 int)

insert into @t values(1)
insert into @t values(2)
insert into @t values(4)

select a1 from @t

go

create procedure x2
as
declare @t1 table(a1 int)
declare @proce_name varchar(40)
set @proce_name = 'x1'

insert into @t1 exec @proce_name

select a1 from @t1
go

/************/
exec x2

go

---------
2000里说存储过程结果不能作为源插入表变量..但是2005可以..求解 .
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hb_gx 2007-11-21
  • 打赏
  • 举报
回复
insert into @t1 exec @proce_name

这个是Sql2005所支持的,但是在Sql2000中还没有那么先进,所以如果在Sql2000使用请改成临时表
dobear_0922 2007-11-21
  • 打赏
  • 举报
回复
用临时表吧,,,
jinjazz 2007-11-21
  • 打赏
  • 举报
回复
create   procedure   x1 
as
declare @t table(a1 int)

insert into @t values(1)
insert into @t values(2)
insert into @t values(4)

select a1 from @t

go

create procedure x2
as

declare @tname varchar(50)
set @tname='#'+replace(newid(),'-','')

declare @sql varchar(8000)
set @sql='
create table '+@tname+'(a1 int)
declare @proce_name varchar(40)
set @proce_name = ''x1 ''

insert into '+@tname+' exec @proce_name

select a1 from '+@tname+'
drop table '+@tname
exec (@sql)
go

/************/
exec x2

go
drop proc x1
drop proc x2
jinjazz 2007-11-21
  • 打赏
  • 举报
回复
create   procedure   x1 
as
declare @t table(a1 int)

insert into @t values(1)
insert into @t values(2)
insert into @t values(4)

select a1 from @t

go

create procedure x2
as

declare @tname varchar(50)
set @tname='#'+replace(newid(),'-','')

declare @sql varchar(8000)
set @sql='
create table '+@tname+'(a1 int)
declare @proce_name varchar(40)
set @proce_name = ''x1 ''

insert into '+@tname+' exec @proce_name

select a1 from '+@tname
exec (@sql)
go

/************/
exec x2

go
drop proc x1
drop proc x2
子陌红尘 2007-11-21
  • 打赏
  • 举报
回复
把表变量换作临时表.

34,575

社区成员

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

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