sql问题 ( 积分: 50 )

  • 主题发起人 主题发起人 dsgllxy
  • 开始时间 开始时间
D

dsgllxy

Unregistered / Unconfirmed
GUEST, unregistred user!
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO



ALTER PROCEDURE LRP
AS
begin transaction
if exists(select * from tempdb.dbo.sysobjects where name='##TC')
drop table ##TC
set nocount on
select
LRPTC.TC001 T01,
COPTC.TC012 T02,
LRPTC.TC026 T03,
LRPTC.TC027 T04,
LRPTC.TC028 T05,
LRPTC.TC002 T06,
INVMB.MB002 T07,
LRPTC.TC003 T08,
PURMA.MA002 T09,
LRPTC.TC011 T10,
LRPTC.TC009 T11,
LRPTC.TC010 T12,
LRPTC.TC006 T13,
LRPTC.TC013 T14,
LRPTC.TC018 T19,
LRPTC.TC019 T20,
LRPTC.TC020 T21,
LRPTC.TC021 T22,
LRPTC.TC012 T23,
LRPTC.TC024 T25,
LRPTC.TC013+LRPTC.TC014+LRPTC.TC015-LRPTC.TC016-LRPTC.TC017+LRPTC.TC018+LRPTC.TC019- LRPTC.TC020-LRPTC.TC021 T26,
MG004 T27
into ##TC
from LRPTC
left join PURMA
on PURMA.MA001=LRPTC.TC004
left join CMSMG
on LRPTC.TC009=CMSMG.MG001
left join INVMB
on LRPTC.TC002=INVMB.MB001
left join COPTD
on (LRPTC.TC026=TD001)and(LRPTC.TC027=TD002)and(LRPTC.TC028=TD003)
left join COPTC
on (TD001=COPTC.TC001)and(TD002=COPTC.TC002)


INSERT ##TC(T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T25)
select TA001,TC012,TA023,TA024,TA025,TA002,MB002,TA003,TA027,MB004,TA006,TA012,TA013,TA014,TA015,
TA016,TA017,TA018,TA019,TA020,TA011,TA026
from LRPTA
left join INVMB
on TA002=MB001
left join COPTC
on TA023=TC001 and TA024=TC002

ALTER TABLE ##TC ADD T24 numeric(10,4) CONSTRAINT T24 DEFAULT 0.00 WITH VALUES---应采购数量

select T01,T02,T03,T04,T05,T06,T07,T08,T09,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19,T20,T21,T22,T23,T24,T25,T26,T27,
T24*T12 T28,---RMB Amount
T24*T12*T27/(select MG004 from CMSMG where MG001='HK$') T29, --HKD Amount
case
when T24=0 then '0.00%'
when T24<>0 then cast(round((T24+T26)/T24,2) as char(10))+'%'
end T30, --OVER_BUY
(T24+T26)*T12 T31
from ##TC order by T01,T02,T03,T04,T05,T06,T09
commit transaction

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
exec LRP

错误描述

服务器: 消息 207,级别 16,状态 3,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 207,级别 16,状态 1,过程 LRP,行 66
列名 'T24' 无效。
服务器: 消息 266,级别 16,状态 1,过程 LRP,行 75
EXECUTE 后的事务计数指出缺少了 COMMIT 或 ROLLBACK TRANSACTION 语句。原计数 = 6,当前计数 = 7。
 
你自己可以调试一下嘛!
在 ALTER TABLE ##TC ADD T24 numeric(10,4) CONSTRAINT T24 DEFAULT 0.00 WITH VALUES---应采购数量
使用select * from ##TC
看看加了T24这个字段了没有! 如果没有加就检查你的
ALTER TABLE ##TC ADD T24 numeric(10,4) CONSTRAINT T24 DEFAULT 0.00 WITH VALUES---应采购数量 这条语句
 
使用select * from ##TC
可以检查到T24列,如果我分段运行,OK没问题,就是把它全部放进存储过程才出现这样的问题
 
我想你是在select ....into 的时候没有插入T24列
 
正因为在select ....into 的时候没有插入T24列 ,所以用alter table name add
 
ALTER TABLE ##TC ADD T24 numeric(10,4) CONSTRAINT T24 DEFAULT 0.00 WITH VALUES---应采购数量
有问题.
 
有什么问题,怎样解决,请高手指点迷津
 
遇到额外使用的字段,你可以采用赋值的方法,给此字段采用使用相同类型的字段替代,然后将其update为默认值,或者干脆直接使用默认值,如将
select
LRPTC.TC001 T01,
COPTC.TC012 T02,
LRPTC.TC026 T03,
LRPTC.TC027 T04,
LRPTC.TC028 T05,
LRPTC.TC002 T06,
INVMB.MB002 T07,
LRPTC.TC003 T08,
PURMA.MA002 T09,
LRPTC.TC011 T10,
LRPTC.TC009 T11,
LRPTC.TC010 T12,
LRPTC.TC006 T13,
LRPTC.TC013 T14,
LRPTC.TC018 T19,
LRPTC.TC019 T20,
LRPTC.TC020 T21,
LRPTC.TC021 T22,
LRPTC.TC012 T23,
LRPTC.TC024 T25,
LRPTC.TC013+LRPTC.TC014+LRPTC.TC015-LRPTC.TC016-LRPTC.TC017+LRPTC.TC018+LRPTC.TC019- LRPTC.TC020-LRPTC.TC021 T26,
MG004 T27
into ##TC
from LRPTC
left join PURMA
on PURMA.MA001=LRPTC.TC004
left join CMSMG
on LRPTC.TC009=CMSMG.MG001
left join INVMB
on LRPTC.TC002=INVMB.MB001
left join COPTD
on (LRPTC.TC026=TD001)and(LRPTC.TC027=TD002)and(LRPTC.TC028=TD003)
left join COPTC
on (TD001=COPTC.TC001)and(TD002=COPTC.TC002)

改为:
select
LRPTC.TC001 T01,
COPTC.TC012 T02,
LRPTC.TC026 T03,
LRPTC.TC027 T04,
LRPTC.TC028 T05,
LRPTC.TC002 T06,
INVMB.MB002 T07,
LRPTC.TC003 T08,
PURMA.MA002 T09,
LRPTC.TC011 T10,
LRPTC.TC009 T11,
LRPTC.TC010 T12,
LRPTC.TC006 T13,
LRPTC.TC013 T14,
LRPTC.TC018 T19,
LRPTC.TC019 T20,
LRPTC.TC020 T21,
LRPTC.TC021 T22,
LRPTC.TC012 T23,
0.00 T24, /*修改之处*/
LRPTC.TC024 T25,
LRPTC.TC013+LRPTC.TC014+LRPTC.TC015-LRPTC.TC016-LRPTC.TC017+LRPTC.TC018+LRPTC.TC019- LRPTC.TC020-LRPTC.TC021 T26,
MG004 T27
into ##TC
from LRPTC
left join PURMA
on PURMA.MA001=LRPTC.TC004
left join CMSMG
on LRPTC.TC009=CMSMG.MG001
left join INVMB
on LRPTC.TC002=INVMB.MB001
left join COPTD
on (LRPTC.TC026=TD001)and(LRPTC.TC027=TD002)and(LRPTC.TC028=TD003)
left join COPTC
on (TD001=COPTC.TC001)and(TD002=COPTC.TC002)
 
begin transaction
Commit TRANSACTION
要对应
 
我操,这个世界没有天理了~~~~~ MD,老虎不发威,当我是病猫, 先骂人的倒有理了 我可是从来不主动得罪人的 谁要是欺负人,那就不客气了 明天把这个工具开个源,叫大家都来用用 请问你们有什么拿的出手的?自己写的东西? 说出来叫大爷我长长见识? 别不会是一群耍嘴皮子的废物吧? 需要的请关注我的 blog http://hi.baidu.com/earthsearch
 
后退
顶部