--生產中我們至少有乙個訂單表,乙個生產進度表,如何將訂單表與生產進度表合成一張表呢,以下是乙個例子,這種方法可以在儲存過程中實現,亦可放在客戶端實現
create procedure [dbo].[processplanform]--加工進度計畫安排表
@sqlqualification varchar(1000),@maxjdsl int--sql條件,最大進度數量
asdeclare @mysql varchar(8000)--sql條件
declare @inpcolums varchar(1000)--被插入字段列表
set @inpcolums=''
declare @outcolums1 varchar(2000)--插入值1--序號
set @outcolums1=''
declare @outcolums2 varchar(2000)--插入值2--計畫開始
set @outcolums2=''
declare @outcolums3 varchar(2000)--插入值3--計畫日期
set @outcolums3=''
declare @outcolums4 varchar(2000)--插入值4--接件日期
set @outcolums4=''
declare @outcolums5 varchar(2000)--插入值5---完成日期
set @outcolums5=''
declare @outconst varchar(200)--輸出列表常量
declare @fildlist varchar(1000)--欄位列表
set @fildlist=''
set @outconst='序號,客戶,訂單編號,品名,材質,成品尺寸,數量,預交期,'
declare @xh int
set @xh=1
set @mysql='
--建立臨時表
declare @mytemp table (myid decimal(18,0) identity (1,1) not null,序號 varchar(11) null,客戶 varchar(5) null,訂單編號 varchar(30) null,品名 varchar(30) null , 材質 varchar(15) null,成品尺寸 varchar(18) null,數量 int null,預交期 datetime null ,工序 varchar(20) null'
while @xh<=@maxjdsl
begin
--修改表結構
if @fildlist=''
set @fildlist=',工序'+convert(varchar(2),@xh) +' varchar(20) null'
else
set @fildlist=@fildlist+',工序'+convert(varchar(2),@xh) +' varchar(20) null'
--set @mysql=@mysql+'alter table #mytemp add 工序'+convert(varchar(2),@xh)+' varchar(20) null'+char(13)--記錄新增欄位名列表
--第一次插入值--工序
if @outcolums1=''
set @outcolums1='dbo.findscjdrecno1(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
else
set @outcolums1=@outcolums1+',dbo.findscjdrecno1(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
--第二次插入值列表--計畫開始
if @outcolums2=''
set @outcolums2='dbo.findscjdrecno2(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
else
set @outcolums2=@outcolums2+',dbo.findscjdrecno2(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
--第三次插入值列表--計畫完成
if @outcolums3=''
set @outcolums3='dbo.findscjdrecno3(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
else
set @outcolums3=@outcolums3+',dbo.findscjdrecno3(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
--第四次插入值列表--接件日期
if @outcolums4=''
set @outcolums4='dbo.findscjdrecno4(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
else
set @outcolums4=@outcolums4+',dbo.findscjdrecno4(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
--第五次插入值列表--完成日期
if @outcolums5=''
set @outcolums5='dbo.findscjdrecno5(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
else
set @outcolums5=@outcolums5+',dbo.findscjdrecno5(序號,'+convert(varchar(2),@xh)+') 工序'+convert(varchar(2),@xh)
--被插入字段列表
if @inpcolums=''
set @inpcolums='工序'+convert(varchar(2),@xh)
else
set @inpcolums=@inpcolums+',工序'+convert(varchar(2),@xh)
set @xh=@xh+1
endset @mysql=@mysql+@fildlist+')'
set @outcolums1='insert into @mytemp ('+@outconst+'工序,'+@inpcolums+') select '+@outconst+'''工序'' 工序 ,'+@outcolums1+' from ywdd where '+@sqlqualification--第一條插入語句
set @outcolums2='insert into @mytemp ('+@outconst+'工序,'+@inpcolums+') select 序號,null 客戶,null 訂單編號,null 品名,null 材質,null 成品尺寸,null 數量,null 預交期,''計畫開始'' 工序 ,'+@outcolums2+' from ywdd where '+@sqlqualification--第二條插入語句
set @outcolums3='insert into @mytemp ('+@outconst+'工序,'+@inpcolums+') select 序號,null 客戶,null 訂單編號,null 品名,null 材質,null 成品尺寸,null 數量,null 預交期,''計畫完成'' 工序 ,'+@outcolums3+' from ywdd where '+@sqlqualification--第三條插入語句
set @outcolums4='insert into @mytemp ('+@outconst+'工序,'+@inpcolums+') select 序號,null 客戶,null 訂單編號,null 品名,null 材質,null 成品尺寸,null 數量,null 預交期,''接件日期'' 工序 ,'+@outcolums4+' from ywdd where '+@sqlqualification--第四條插入語句
set @outcolums5='insert into @mytemp ('+@outconst+'工序,'+@inpcolums+') select 序號,null 客戶,null 訂單編號,null 品名,null 材質,null 成品尺寸,null 數量,null 預交期,''完成日期'' 工序 ,'+@outcolums5+' from ywdd where '+@sqlqualification--第五條插入語句
set @mysql=@mysql+char(13)+@outcolums1+char(13)+@outcolums2+char(13)+@outcolums3+char(13)+@outcolums4+char(13)+@outcolums5+char(13)
set @mysql=@mysql+'select '+@outconst+'工序,'+@inpcolums+' from @mytemp order by 序號,myid'
exec (@mysql)
go
PLSQL 儲存過程動態建立表
1 sqlplus登入 sqlplus又叫sql plus,是oracle資料庫操作最重要的工具,它既可以編輯sql語句,也可以編輯和除錯pl sql的程式。在 開始 的 執行 中敲入 cmd 在dos裡面輸入 sqlplus nolog 再回車,接著輸入 conn sys wengyupeng o...
建立儲存過程
execute pro book 當你執行該儲存過程時,所有包括在其中的sql語句都會執行,在上面的例子中,會返回所有在forum表中的記錄。當在批處理中的第乙個語句是呼叫儲存過程時,你並不需要使用execute語句。你可以簡單地提供儲存過程的名稱來執行儲存過程。比如在isql w中,可以象下面所示...
建立儲存過程
create procedure dbo procgetdata days int asbegin set nocount on added to prevent extra result sets from interfering with select statements.set nocoun...