tempali
یک شنبه 17 مهر 1390, 10:06 صبح
سلام
من جهت طراحی یک برنامه انبار داری یک پروسیجری برای بدست آوردن موجودی هر مشتری از یک کالا نوشتم که با توجه به تعداد کالاها(479) و تعداد 20 تایی مشتری ها حدود 12 دقیقه طول می کشه تا به نتیجه برسه. لطفا اگر راه حل بهتری به نظرتان می رسه کمک کنید.(اگر مدیران بخش نیاز به دریافت یک نسخه از دیتا بیس داشتن لطفا اعلام کنند)
کد مورد نظر:
CREATE procedure KAF
as
begin
declare @x varchar(4000)
declare @Y as varchar(5000)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TKAF]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TKAF]
set @x='create table TKAF (Pname varchar(20)'
select @x=@x +', ['+cast(max([customer id]) as varchar(10))+'] varchar(4) default(0)'
from [_mojodi_total_]
group by [customer id]
order by [customer id]
set @x=@x+')'
exec (@x)
set @y='insert into tkaf(pname) select distinct [part no] from _mojodi_total_'
exec(@y)
declare @b varchar (5000)
declare @count1 int
declare @count2 int
declare @n int
declare @p int
declare @PN varchar(50)
declare @PCount int
/*-------------------*/
select @count1=count([pname]) from tkaf
select @count2=count([customer id]) from _customer_
/*--------------------*/
print (@count1)
print (@count2)
/*-----------------*/
set @n=0
set @p=1
/*---------------*/
deallocate tb3
declare tb3 cursor
FOR
select pname from tkaf
open tb3
while @p<>@count1
begin
set @p=@p+1
set @n=1
while @n<=@count2
begin
set @pcount=0
select @pcount=[rtotal] from cus_mojodi(@n ,@pn)
set @pcount=isnull(@pcount,0)
set @y='update tkaf set [' + cast(@n as varchar(5))+ ']='+ cast(@pcount as varchar(50)) + ' where pname=''' + @pn + ''''
exec(@y)
set @n=@n+1
end
fetch next from tb3 into @pn
end
exec ('select * from tkaf')
deallocate tb3
end
GO
من جهت طراحی یک برنامه انبار داری یک پروسیجری برای بدست آوردن موجودی هر مشتری از یک کالا نوشتم که با توجه به تعداد کالاها(479) و تعداد 20 تایی مشتری ها حدود 12 دقیقه طول می کشه تا به نتیجه برسه. لطفا اگر راه حل بهتری به نظرتان می رسه کمک کنید.(اگر مدیران بخش نیاز به دریافت یک نسخه از دیتا بیس داشتن لطفا اعلام کنند)
کد مورد نظر:
CREATE procedure KAF
as
begin
declare @x varchar(4000)
declare @Y as varchar(5000)
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TKAF]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[TKAF]
set @x='create table TKAF (Pname varchar(20)'
select @x=@x +', ['+cast(max([customer id]) as varchar(10))+'] varchar(4) default(0)'
from [_mojodi_total_]
group by [customer id]
order by [customer id]
set @x=@x+')'
exec (@x)
set @y='insert into tkaf(pname) select distinct [part no] from _mojodi_total_'
exec(@y)
declare @b varchar (5000)
declare @count1 int
declare @count2 int
declare @n int
declare @p int
declare @PN varchar(50)
declare @PCount int
/*-------------------*/
select @count1=count([pname]) from tkaf
select @count2=count([customer id]) from _customer_
/*--------------------*/
print (@count1)
print (@count2)
/*-----------------*/
set @n=0
set @p=1
/*---------------*/
deallocate tb3
declare tb3 cursor
FOR
select pname from tkaf
open tb3
while @p<>@count1
begin
set @p=@p+1
set @n=1
while @n<=@count2
begin
set @pcount=0
select @pcount=[rtotal] from cus_mojodi(@n ,@pn)
set @pcount=isnull(@pcount,0)
set @y='update tkaf set [' + cast(@n as varchar(5))+ ']='+ cast(@pcount as varchar(50)) + ' where pname=''' + @pn + ''''
exec(@y)
set @n=@n+1
end
fetch next from tb3 into @pn
end
exec ('select * from tkaf')
deallocate tb3
end
GO