首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

存贮过程

2012-01-24 
存贮过程请教高手CREATEPROCEDUREqd_proaddcl@cltable1char(10),@pzhm1char(8),@rq1char(10),@pzlb1char(1

存贮过程请教高手
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),
@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
begin
declare @sql nvarchar(4000)
set @sql=N ' insert into cltable1(pzhm,rq,pzlb,shrq,pjhm,zdr, '
+N ' shr,khhm,khmc,zh,mc,gg,dw,sl,dj,je,bz,jsr) '
+N ' values(@pzhm1,@rq1,@pzlb1,@shrq1,@pjhm1,@zdr1,@shr1, '
+N ' @khhm1,@khmc1,@zh1,@mc1,@gg1,@dw1,@sl1,@dj1,@je1,@bz1,@jsr1) '

exec sp_executesql @sql,
N '@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) ',
@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)
end
go

热点排行
Bad Request.