存贮过程请教高手
CREATE PROCEDURE qd_proaddcl
@cltable1 char(10),
@pzhm1 char(8),
@rq1 char(10),
@pzlb1 char(12),
@shrq1 char(10),
@pjhm1 char(10),
@zdr1 char(8),
@shr1 char(8),
@khhm1 char(8),
@khmc1 char(40),
@zh1 char(8),
@mc1 char(30),
@gg1 char(4),
@dw1 char(6),
@sl1 numeric(12,2),
@dj1 numeric(12,4),
@je1 numeric(12,2),
@bz1 char(28),
@jsr1 char(8)
as
DECLARE @cltable2 char(8)
select cltable2=@cltable1
insert into cltable2
(pzhm,rq,pzlb,shrq,pjhm,zdr,shr,khhm,khmc,zh,mc,gg,dw,sl,dj,je,bz,jsr) values (@pzhm1,@rq1,@pzlb1,@shrq1,@pjhm1,@zdr1,@shr1,@khhm1,@khmc1,@zh1,@mc1,@gg1,@dw1,@sl1,@dj1,@je1,@bz1,@jsr1)
GO
用CLTABLE1传递表名,该怎样写?insert into cltable2 不行.
------解决方案--------------------用動態SQL語句
CREATE PROCEDURE qd_proaddcl
@cltable1 VarVarchar(10),
@pzhm1 Varchar(8),
@rq1 Varchar(10),
@pzlb1 Varchar(12),
@shrq1 Varchar(10),
@pjhm1 Varchar(10),
@zdr1 Varchar(8),
@shr1 Varchar(8),
@khhm1 Varchar(8),
@khmc1 Varchar(40),
@zh1 Varchar(8),
@mc1 Varchar(30),
@gg1 Varchar(4),
@dw1 Varchar(6),
@sl1 numeric(12,2),
@dj1 numeric(12,4),
@je1 numeric(12,2),
@bz1 Varchar(28),
@jsr1 Varchar(8)
as
DECLARE @S Varchar(8000)
Select @S = 'insert into ' + @cltable1 + ' (pzhm,rq,pzlb,shrq,pjhm,zdr,shr,khhm,khmc,zh,mc,gg,dw,sl,dj,je,bz,jsr) values ( ' ' ' + @pzhm1 + ' ' ', ' ' ' + @rq1 + ' ' ', ' ' ' + @pzlb1 + ' ' ', ' ' ' + @shrq1 + ' ' ', ' ' ' + @pjhm1 + ' ' ', ' ' ' + @zdr1 + ' ' ', ' ' ' + @shr1 + ' ' ', ' ' ' + @khhm1 + ' ' ', ' ' ' + @khmc1 + ' ' ', ' ' ' + @zh1 + ' ' ', ' ' ' + @mc1 + ' ' ', ' ' ' + @gg1 + ' ' ', ' ' ' + @dw1 + ' ' ', ' + Cast(@sl1 As Varchar) + ', ' + Cast(@dj1 As Varchar) + ', ' + Cast(@je1 As Varchar) + ', ' ' ' + @bz1 + ' ' ', ' ' ' + @jsr1 + ' ' ') '
EXEC(@S)
GO
------解决方案--------------------try:
CREATE PROCEDURE qd_proaddcl
@cltable1 char(10),
@pzhm1 char(8),
@rq1 char(10),
@pzlb1 char(12),
@shrq1 char(10),
@pjhm1 char(10),
@zdr1 char(8),
@shr1 char(8),
@khhm1 char(8),
@khmc1 char(40),
@zh1 char(8),
@mc1 char(30)