由于存储过程改变了目标表的架构,INSERT EXEC 失败。

律己修心 2009-09-11 06:28:08
由于存储过程改变了目标表的架构,INSERT EXEC 失败。

下面的语句出现如上错误
请大家帮忙

if object_id('tempdb..#ID') is not null drop table #ID
create table #ID (採番結果 varchar(100))
insert into #ID exec dbo.SpEstablishRebateGetContractID




SpEstablishRebateGetContractID 的内容
具体内容不用看了
主要是这个:
select right('00000000'+cast(@RtnID as varchar),8) as 採番結果 ----这个是返回值
这个语句单独拿出来 建个存储过程执行上面的代码没有问题


create proc SpEstablishRebateGetContractID
as
begin
set nocount on

declare @MaxID int
declare @MaxCD int
declare @CntID int
declare @RtnID int

select @MaxID = isnull(max(創業祭ID),0) from dbo.tblEstablishRebateMstContract with (updlock)
select @CntID = count(1) from dbo.tblEstablishRebateMstContract with (updlock)
if @MaxID <> @CntID
begin

if object_id('tempdb..#ID') is not null
drop table #ID

create table #ID (ID int identity(1,1),Col int )
exec (' insert #ID select top '+@MaxID+' 1 as Col from syscolumns a,syscolumns b')

select @RtnID=isnull(min(ID),0) from #ID
where ID not in ( select 創業祭ID from dbo.tblEstablishRebateMstContract with (updlock))
and ID not in ( select ContractID from dbo.tblEstablishRebateGetContractID with (updlock))

if @RtnID <> 0
begin
select right('00000000'+cast(@RtnID as varchar),8) as 採番結果 ----这个是返回值
insert dbo.tblEstablishRebateGetContractID
select @RtnID,host_name(),getdate()
end

end

if (@MaxID = @CntID) or (@RtnID =0)
begin

select @MaxCD = isnull(max(ContractID),0) from dbo.tblEstablishRebateGetContractID with (updlock)

if @MaxID > @MaxCD
set @RtnID=@MaxID+1
else
set @RtnID=@MaxCD+1

select right('00000000'+cast(@RtnID as varchar),8) as 採番結果 ----这个是返回值
insert dbo.tblEstablishRebateGetContractID
select @RtnID,host_name(),getdate()

end
if object_id('tempdb..#ID') is not null drop table #ID

set nocount off
end


...全文
605 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
shizheyangde 2010-06-03
  • 打赏
  • 举报
回复
学习了
NewJob2010 2010-05-13
  • 打赏
  • 举报
回复
我现在也发生了这个问题,学习一下,test看看能不能
NewJob2010 2010-05-13
  • 打赏
  • 举报
回复
q gm d
律己修心 2009-09-13
  • 打赏
  • 举报
回复
OK
htl258_Tony 2009-09-11
  • 打赏
  • 举报
回复
GX
律己修心 2009-09-11
  • 打赏
  • 举报
回复
明天来揭帖 追加100
sql77 给100
其他人分100
ChinaJiaBing 2009-09-11
  • 打赏
  • 举报
回复
解决了,占个位子
SQL77 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gdc_zhaoyz0304360 的回复:]
我是现在揭帖?还是 让大家也看看,积累点儿经验呢?
[/Quote]
HOHO,同名的肯定容易碰到了,
  • 打赏
  • 举报
回复
已经解决了?占个位
律己修心 2009-09-11
  • 打赏
  • 举报
回复
我是现在揭帖?还是 让大家也看看,积累点儿经验呢?
soft_wsx 2009-09-11
  • 打赏
  • 举报
回复
支持一下先[Quote=引用 1 楼 sql77 的回复:]
由于存储过程改变了目标表的架构

可能是你存储过程中,

create table #ID (ID int identity(1,1),Col int )
    exec (' insert #ID select top '+@MaxID+' 1 as Col from syscolumns a,syscolumns b')

这里出问题了,改了表的结构,后面插入才会错误??要不你那里再弄个临时表
[/Quote]
律己修心 2009-09-11
  • 打赏
  • 举报
回复
OK了
谢谢sql77

if object_id('tempdb..#GUID') is not null drop table #GUID
create table #GUID (採番結果 varchar(100))
insert into #GUID exec dbo.SpEstablishRebateGetContractID
律己修心 2009-09-11
  • 打赏
  • 举报
回复
哦,才发现,有同名的临时表
我test一下
SQL77 2009-09-11
  • 打赏
  • 举报
回复
由于存储过程改变了目标表的架构

可能是你存储过程中,

create table #ID (ID int identity(1,1),Col int )
exec (' insert #ID select top '+@MaxID+' 1 as Col from syscolumns a,syscolumns b')

这里出问题了,改了表的结构,后面插入才会错误??要不你那里再弄个临时表

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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