为什么我用临时表会报Can't reopen table: 'tmp_query_full_item_inv'

hdhmail2000 2007-12-06 02:44:38
为什么我用临时表会报Can't reopen table: 'tmp_query_full_item_inv'
而用非临时表就可以呢?
帮帮忙啊
-- CREATE TEMPORARY TABLE if not exists tmp_query_full_item_inv
CREATE TABLE if not exists tmp_query_full_item_inv
(
id varchar(100) NOT NULL,
account_oid varchar(36),
bu_id varchar(20),
parter_bu_oid varchar(36),
parter_bu_id varchar(20),
parter_bu_name varchar(60),
item_category varchar(10),
item_bu_oid varchar(36),
item_bu_id varchar(20),
item_bu_name varchar(60),
item_rpt_id varchar(20),
supplier_oid varchar(36),
supplier_id varchar(20),
supplier_name varchar(60),
begin_qty double(12, 3),
rn_qty double(12, 3),
un_rn_qty double(12, 3),
dn_qty double(12, 3),
lock_qty double(12, 3),
inv_adj_qty double(12, 3),
entity_tsf_qty double(12, 3),
pending_tsf_qty double(12, 3),
end_qty double(12, 3),
inv_days double(12, 3),
avg_qty double(12, 3),
order_qty_1 double(12, 3),
order_qty_2 double(12, 3),
PRIMARY KEY (`id`)
)ENGINE=MyISAM DEFAULT CHARSET=utf8;
truncate table tmp_query_full_item_inv;

if errorCode=0 then
-- Begining Qty --
call SP_RP_GET_BEGINQTY(accountOid,buId,startDate,endDate,
entityOid,custCategory,itemBuId,supplierId,pageSize,
currentPage,recordCount,errorCode,errorDesc);
if errorCode=0 then
-- DN --
insert into tmp_query_full_item_inv
(
id,
account_oid ,
bu_id ,
parter_bu_oid ,
parter_bu_id ,
parter_bu_name ,
item_category ,
item_bu_oid ,
item_bu_id ,
item_bu_name ,
item_rpt_id ,
supplier_oid ,
supplier_id ,
supplier_name ,
begin_qty ,
rn_qty ,
un_rn_qty ,
dn_qty ,
lock_qty ,
inv_adj_qty ,
entity_tsf_qty ,
pending_tsf_qty ,
end_qty ,
inv_days ,
avg_qty ,
order_qty_1 ,
order_qty_2
)
(
select distinct(id),
account_oid ,
bu_id ,
parter_bu_oid ,
parter_bu_id ,
parter_bu_name ,
item_category ,
item_bu_oid ,
item_bu_id ,
item_bu_name ,
item_rpt_id ,
supplier_oid ,
supplier_id ,
supplier_name ,
begin_qty ,
rn_qty ,
un_rn_qty ,
0 as qty ,
lock_qty ,
inv_adj_qty ,
entity_tsf_qty ,
pending_tsf_qty ,
end_qty ,
inv_days ,
avg_qty ,
order_qty_1 ,
order_qty_2 from
(select concat(parter.parter_bu_oid,',',item.item_bu_oid) as id,
accountOid as account_oid,
buId as bu_id,
parter.parter_bu_oid,
parter.parter_bu_id,
parter.parter_bu_name,
item.category1 as item_category,
item.item_bu_oid,
item.item_bu_id,
item.item_bu_name,
item.item_rpt_id,
supplier.parter_bu_oid as supplier_oid,
supplier.parter_bu_id as supplier_id,
supplier.parter_bu_name as supplier_name,
0 as begin_qty ,
0 as rn_qty ,
0 as un_rn_qty ,
sum(dndetail.shipped_qty) as qty,
0 as lock_qty ,
0 as inv_adj_qty ,
0 as entity_tsf_qty ,
0 as pending_tsf_qty ,
0 as end_qty ,
0 as inv_days ,
0 as avg_qty ,
0 as order_qty_1 ,
0 as order_qty_2
from so_dn_head dnhead, so_dn_detail dndetail, v_mf_item_bu item, v_mf_parter_bu parter, v_mf_parter_bu supplier
where if(startDate='' or startDate is null,true,dnhead.dispatch_date>=startDate)
and if(endDate='' or endDate is null,true,dnhead.dispatch_date<=endDate)
and dnhead.so_dn_head_oid=dndetail.so_dn_head_oid
and dndetail.last_status in ('140', '190')
and dnhead.bu_id=buId
and dndetail.item_bu_oid=item.item_bu_oid
and if(custCategory='' or custCategory is null,true,item.category1=custCategory)
and parter.parter_bu_oid=dndetail.entity_bu_oid
and (dndetail.pending_ind=0 or dndetail.pending_ind is null)
and item.pri_supplier_oid=supplier.parter_bu_oid
and if(entityOid='' or entityOid is null,true,if(entityOid=selectSupplier,parter.parter_type='S',dndetail.entity_bu_oid=entityOid))
and if(supplierId='' or supplierId is null,true,item.pri_supplier_oid=supplierId)
and if(itemBuId='' or itemBuId is null,true,item.item_bu_id=itemBuId)
and if(itemBuId='' or itemBuId is null,true,item.bu_id=buId)
group by dndetail.entity_bu_oid, dndetail.item_bu_oid
having qty is not null and qty <> 0)T
where id not in (select id from tmp_query_full_item_inv)
);
update tmp_query_full_item_inv a, (select concat(parter.parter_bu_oid,',',item.item_bu_oid) as id,
accountOid as account_oid,
buId as bu_id,
parter.parter_bu_oid,
parter.parter_bu_id,
parter.parter_bu_name,
item.category1 as item_category,
item.item_bu_oid,
item.item_bu_id,
item.item_bu_name,
item.item_rpt_id,
supplier.parter_bu_oid as supplier_oid,
supplier.parter_bu_id as supplier_id,
supplier.parter_bu_name as supplier_name,
0 as begin_qty ,
0 as rn_qty ,
0 as un_rn_qty ,
sum(dndetail.shipped_qty) as qty,
0 as lock_qty ,
0 as inv_adj_qty ,
0 as entity_tsf_qty ,
0 as pending_tsf_qty ,
0 as end_qty ,
0 as inv_days ,
0 as avg_qty ,
0 as order_qty_1 ,
0 as order_qty_2
from so_dn_head dnhead, so_dn_detail dndetail, v_mf_item_bu item, v_mf_parter_bu parter, v_mf_parter_bu supplier
where if(startDate='' or startDate is null,true,dnhead.dispatch_date>=startDate)
and if(endDate='' or endDate is null,true,dnhead.dispatch_date<=endDate)
and dnhead.so_dn_head_oid=dndetail.so_dn_head_oid
and dndetail.last_status in ('140', '190')
and dnhead.bu_id=buId
and dndetail.item_bu_oid=item.item_bu_oid
and if(custCategory='' or custCategory is null,true,item.category1=custCategory)
and parter.parter_bu_oid=dndetail.entity_bu_oid
and (dndetail.pending_ind=0 or dndetail.pending_ind is null)
and item.pri_supplier_oid=supplier.parter_bu_oid
and if(entityOid='' or entityOid is null,true,if(entityOid=selectSupplier,parter.parter_type='S',dndetail.entity_bu_oid=entityOid))
and if(supplierId='' or supplierId is null,true,item.pri_supplier_oid=supplierId)
and if(itemBuId='' or itemBuId is null,true,item.item_bu_id=itemBuId)
and if(itemBuId='' or itemBuId is null,true,item.bu_id=buId)
group by dndetail.entity_bu_oid, dndetail.item_bu_oid
having qty is not null and qty <> 0)T
set a.dn_qty=a.dn_qty+T.qty
where a.id=T.id;
...全文
1057 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hdhmail2000 2007-12-07
  • 打赏
  • 举报
回复
谢谢斑竹:)才发现你是老大阿,呵呵
增加一个临时表解决了
hdhmail2000 2007-12-06
  • 打赏
  • 举报
回复
啊?不能select两次?那我这个该怎么搞?
懒得去死 2007-12-06
  • 打赏
  • 举报
回复
看红色部分。
懒得去死 2007-12-06
  • 打赏
  • 举报
回复
insert into tmp_query_full_item_inv
(
id,
account_oid ,
bu_id ,
parter_bu_oid ,
parter_bu_id ,
parter_bu_name ,
item_category ,
item_bu_oid ,
item_bu_id ,
item_bu_name ,
item_rpt_id ,
supplier_oid ,
supplier_id ,
supplier_name ,
begin_qty ,
rn_qty ,
un_rn_qty ,
dn_qty ,
lock_qty ,
inv_adj_qty ,
entity_tsf_qty ,
pending_tsf_qty ,
end_qty ,
inv_days ,
avg_qty ,
order_qty_1 ,
order_qty_2
)
(
select distinct(id),
account_oid ,
bu_id ,
parter_bu_oid ,
parter_bu_id ,
parter_bu_name ,
item_category ,
item_bu_oid ,
item_bu_id ,
item_bu_name ,
item_rpt_id ,
supplier_oid ,
supplier_id ,
supplier_name ,
begin_qty ,
rn_qty ,
un_rn_qty ,
0 as qty ,
lock_qty ,
inv_adj_qty ,
entity_tsf_qty ,
pending_tsf_qty ,
end_qty ,
inv_days ,
avg_qty ,
order_qty_1 ,
order_qty_2 from
(select concat(parter.parter_bu_oid,',',item.item_bu_oid) as id,
accountOid as account_oid,
buId as bu_id,
parter.parter_bu_oid,
parter.parter_bu_id,
parter.parter_bu_name,
item.category1 as item_category,
item.item_bu_oid,
item.item_bu_id,
item.item_bu_name,
item.item_rpt_id,
supplier.parter_bu_oid as supplier_oid,
supplier.parter_bu_id as supplier_id,
supplier.parter_bu_name as supplier_name,
0 as begin_qty ,
0 as rn_qty ,
0 as un_rn_qty ,
sum(dndetail.shipped_qty) as qty,
0 as lock_qty ,
0 as inv_adj_qty ,
0 as entity_tsf_qty ,
0 as pending_tsf_qty ,
0 as end_qty ,
0 as inv_days ,
0 as avg_qty ,
0 as order_qty_1 ,
0 as order_qty_2
from so_dn_head dnhead, so_dn_detail dndetail, v_mf_item_bu item, v_mf_parter_bu parter, v_mf_parter_bu supplier
where if(startDate='' or startDate is null,true,dnhead.dispatch_date> =startDate)
and if(endDate='' or endDate is null,true,dnhead.dispatch_date <=endDate)
and dnhead.so_dn_head_oid=dndetail.so_dn_head_oid
and dndetail.last_status in ('140', '190')
and dnhead.bu_id=buId
and dndetail.item_bu_oid=item.item_bu_oid
and if(custCategory='' or custCategory is null,true,item.category1=custCategory)
and parter.parter_bu_oid=dndetail.entity_bu_oid
and (dndetail.pending_ind=0 or dndetail.pending_ind is null)
and item.pri_supplier_oid=supplier.parter_bu_oid
and if(entityOid='' or entityOid is null,true,if(entityOid=selectSupplier,parter.parter_type='S',dndetail.entity_bu_oid=entityOid))
and if(supplierId='' or supplierId is null,true,item.pri_supplier_oid=supplierId)
and if(itemBuId='' or itemBuId is null,true,item.item_bu_id=itemBuId)
and if(itemBuId='' or itemBuId is null,true,item.bu_id=buId)
group by dndetail.entity_bu_oid, dndetail.item_bu_oid
having qty is not null and qty <> 0)T
where id not in (select id from tmp_query_full_item_inv)
);
hdhmail2000 2007-12-06
  • 打赏
  • 举报
回复
我那儿打开两次了?
懒得去死 2007-12-06
  • 打赏
  • 举报
回复
临时表只能被打开一次,在一个SESSION里面。

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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