Process multi-row data with cursor or without cursor[利用游标或者非游标处理多行数据]
2008-05-07 21:14
471 查看
Implement functionality using Cusor
/*
decription:
import data from BomIntraplantRoute_Buckets of ofg_response_staging into
ds_in_bom_intraplant_route_bucket of OFG_SLV_DEV
created by: Winstion He on 2008/1/2
*/
create proc [dbo].[Pr_ToSolver_ds_in_bom_intraplant_route_bucket]
as
declare @BomIntraplantRouteId int
declare @BucketId int
declare @Yield float
declare @Tpt int
declare @Mfg float
--clear primitive data
if Exists(select * from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket)
delete from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
declare c_BomIntraRoute_Buckets cursor for
select BomIntraplantRouteId,BucketId,Yield,Tpt,Mfg
from BomIntraplantRoute_Buckets
open c_BomIntraRoute_Buckets
fetch from c_BomIntraRoute_Buckets into @BomIntraplantRouteId,@BucketId,@Yield,@Tpt,@Mfg
while @@fetch_status=0 begin
--get bom_header_name,intraplant_route_name through @BomIntraplantRouteId
--from BomIntraplantRoute
declare @IntraplantRouteName varchar(128)
declare @BomId varchar(128)
select @BomId=A.BomId,@IntraplantRouteName=B.IntraplantRouteName
from BomIntraplantRoute as A
join IntraplantRoute as B
on A.IntraplantRouteId= B.IntraplantRouteId
where A.BomIntraplantRouteId=@BomIntraplantRouteId
--get bucketname based bucketid using proc
declare @bucketName varchar(6)
exec Pr_ToSolver_PopulateBucketName @BucketId,@bucketName output
--insert value to table
insert into OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
(
bom_header_name,
bucket,
intraplant_route_name,
yield,
tpt,
mfg
)
values
(
@BomId,
@bucketName,
@IntraplantRouteName,
@Yield,
@Tpt,
@Mfg
)
if @@rowcount < 1 goto ErrorHandle
--next row
fetch from c_BomIntraRoute_Buckets into @BomIntraplantRouteId,@BucketId,@Yield,@Tpt,@Mfg
end
ErrorHandle:
print 'BUG!'
close c_BomIntraRoute_Buckets
deallocate c_BomIntraRoute_Buckets
return
implement functionality without using cursor
use ofg_response_staging
if object_id('Pr_ToSolver_ds_in_bom_intraplant_route_bucket') is not null
drop proc Pr_ToSolver_ds_in_bom_intraplant_route_bucket
go
create proc Pr_ToSolver_ds_in_bom_intraplant_route_bucket
as
if exists(select * from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket)
delete from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
insert into OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
(
bom_header_name
,bucket
,intraplant_route_name
,yield
,tpt
,mfg
)
select
bi.BomId
,ltrim(str(b.YearCode))+ case when b.WorkWeekCode <=9 then '0'+ ltrim(str(b.WorkWeekCode))
when b.WorkWeekCode >9 then ltrim(str(b.workWeekCode))
end as bucketname
,i.IntraplantRouteName
,birb.Yield
, birb.Tpt
,birb.Mfg
from
BomIntraplantRoute bi,
BomIntraplantRoute_Buckets birb,
IntraplantRoute i,
Bucket b
where
bi.BomIntraplantRouteId=birb.BomIntraplantRouteId
and
bi.IntraplantRouteId=i.IntraplantRouteId
and
birb.BucketId=b.BucketId
select
ltrim(str(b.YearCode))+ case when b.WorkWeekCode <=9 then '0'+ ltrim(str(b.WorkWeekCode))
when b.WorkWeekCode >9 then ltrim(str(b.workWeekCode))
end as bucketname
from Bucket b
go
/*
decription:
import data from BomIntraplantRoute_Buckets of ofg_response_staging into
ds_in_bom_intraplant_route_bucket of OFG_SLV_DEV
created by: Winstion He on 2008/1/2
*/
create proc [dbo].[Pr_ToSolver_ds_in_bom_intraplant_route_bucket]
as
declare @BomIntraplantRouteId int
declare @BucketId int
declare @Yield float
declare @Tpt int
declare @Mfg float
--clear primitive data
if Exists(select * from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket)
delete from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
declare c_BomIntraRoute_Buckets cursor for
select BomIntraplantRouteId,BucketId,Yield,Tpt,Mfg
from BomIntraplantRoute_Buckets
open c_BomIntraRoute_Buckets
fetch from c_BomIntraRoute_Buckets into @BomIntraplantRouteId,@BucketId,@Yield,@Tpt,@Mfg
while @@fetch_status=0 begin
--get bom_header_name,intraplant_route_name through @BomIntraplantRouteId
--from BomIntraplantRoute
declare @IntraplantRouteName varchar(128)
declare @BomId varchar(128)
select @BomId=A.BomId,@IntraplantRouteName=B.IntraplantRouteName
from BomIntraplantRoute as A
join IntraplantRoute as B
on A.IntraplantRouteId= B.IntraplantRouteId
where A.BomIntraplantRouteId=@BomIntraplantRouteId
--get bucketname based bucketid using proc
declare @bucketName varchar(6)
exec Pr_ToSolver_PopulateBucketName @BucketId,@bucketName output
--insert value to table
insert into OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
(
bom_header_name,
bucket,
intraplant_route_name,
yield,
tpt,
mfg
)
values
(
@BomId,
@bucketName,
@IntraplantRouteName,
@Yield,
@Tpt,
@Mfg
)
if @@rowcount < 1 goto ErrorHandle
--next row
fetch from c_BomIntraRoute_Buckets into @BomIntraplantRouteId,@BucketId,@Yield,@Tpt,@Mfg
end
ErrorHandle:
print 'BUG!'
close c_BomIntraRoute_Buckets
deallocate c_BomIntraRoute_Buckets
return
implement functionality without using cursor
use ofg_response_staging
if object_id('Pr_ToSolver_ds_in_bom_intraplant_route_bucket') is not null
drop proc Pr_ToSolver_ds_in_bom_intraplant_route_bucket
go
create proc Pr_ToSolver_ds_in_bom_intraplant_route_bucket
as
if exists(select * from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket)
delete from OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
insert into OFG_SLV_DEV3.dbo.ds_in_bom_intraplant_route_bucket
(
bom_header_name
,bucket
,intraplant_route_name
,yield
,tpt
,mfg
)
select
bi.BomId
,ltrim(str(b.YearCode))+ case when b.WorkWeekCode <=9 then '0'+ ltrim(str(b.WorkWeekCode))
when b.WorkWeekCode >9 then ltrim(str(b.workWeekCode))
end as bucketname
,i.IntraplantRouteName
,birb.Yield
, birb.Tpt
,birb.Mfg
from
BomIntraplantRoute bi,
BomIntraplantRoute_Buckets birb,
IntraplantRoute i,
Bucket b
where
bi.BomIntraplantRouteId=birb.BomIntraplantRouteId
and
bi.IntraplantRouteId=i.IntraplantRouteId
and
birb.BucketId=b.BucketId
select
ltrim(str(b.YearCode))+ case when b.WorkWeekCode <=9 then '0'+ ltrim(str(b.WorkWeekCode))
when b.WorkWeekCode >9 then ltrim(str(b.workWeekCode))
end as bucketname
from Bucket b
go
相关文章推荐
- 利用formData,在使用form表单提交参数(或者文件)时,处理回调函数
- (2016)[SAS数据处理] 利用二分法思想加速DATA步数据截取操作 [v1.02]
- oracle10g- oracle 关于集合数据的处理 cursor 游标
- Keras 处理 不平衡的数据的分类问题 imbalance data 或者 highly skewed data
- Working with Data in Apex(在Apex中处理数据)
- 利用游标循环更新数据提示出错 No data - zero rows fetched, selected, or processed
- 利用row_number函数处理重复数据
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- 利用row_number函数处理重复数据
- 利用row_number函数处理重复数据
- 利用Oracle分析函数row_number和sys_connect_by_path实现多行数据合并为一行
- C++图像处理中从硬盘读入图像文件,并将相应数据赋值给图像类的char**data成员
- 利用sendmsg和recvmsg来指定发送接口或者获取接收数据接口
- Grab a SQL Image data type with the Connector, ODBC or Microsofts ADO
- 利用Oracle分析函数实现多行数据合并为一行
- data Mining with Weka: Trailer More Data Mining with Weka 用weka 进行数据挖掘 Weka 用weka 进行更多数据挖掘
- DataFrame数据中的重复行,利用groupby累加合并
- 基于MVC+EasyUI的Web开发框架经验总结(12)--利用Jquery处理数据交互的几种方式
- 把输入的整数或者实数数据当成字符串来处理,方便