当前位置: 代码迷 >> Sql Server >> 关于带参数表名的存储过程解决方法
  详细解决方案

关于带参数表名的存储过程解决方法

热度:29   发布时间:2016-04-27 12:06:07.0
关于带参数表名的存储过程
我想实现输入参数即可执行的过程,可是报错?怎么解决
declare @cs int
creat proc sp_kssjzl @cs int
as
alter table [email protected] add tel nvarchar(@cs0)
alter table [email protected] add 交费标志 nvarchar(10)
alter table [email protected] add 交费序号 nvarchar(10)
alter table [email protected] add 收费方式 nvarchar(10)
alter table [email protected] add 网报日期 nvarchar(10)
UPDATE [email protected] SET 网报日期=报考日期,tel=联系电话 where 网报日期 is null
UPDATE [email protected] SET 交费标志 = NULL,交费序号 = NULL,收费方式=NULL
UPDATE b SET b.交费序号 = a.收费序号, b.交费标志 = 'bmjf',b.收费方式=a.[收费人/计算机名]
FROM web_ShouFei as a INNER JOIN [email protected] as b ON a.主键编号 = b.主键编号
WHERE (a.是否交费 = '1' and [email protected]')

  UPDATE [email protected] SET 身份证号 = REPLACE(身份证号, 'x', 'X')
  update [email protected] set 姓名=replace(姓名,char(10),'')
  update [email protected] set 姓名=replace(姓名,char(13),'')
  update [email protected] set 姓名=replace(姓名,' ','')
  update [email protected] set 姓名=replace(姓名,' ','')
go


------解决方案--------------------
表名或者字段名为变量的时候 要用动态SQL
------解决方案--------------------
SQL code
declare @cs intcreate proc sp_kssjzl @cs intasdeclare @sql varchar(2000)set @sql='alter table 考生表'+ltrim(@cs)+' add tel nvarchar('+ltrim(@cs)+')alter table 考生表'+ltrim(@cs)+' add 交费标志 nvarchar(10)alter table 考生表'+ltrim(@cs)+' add 交费序号 nvarchar(10)alter table 考生表'+ltrim(@cs)+' add 收费方式 nvarchar(10)alter table 考生表'+ltrim(@cs)+' add 网报日期 nvarchar(10)UPDATE [email protected] SET 网报日期=报考日期,tel=联系电话 where 网报日期 is nullUPDATE [email protected] SET 交费标志 = NULL,交费序号 = NULL,收费方式=NULLUPDATE b SET b.交费序号 = a.收费序号, b.交费标志 = '+''''+'bmjf'+''''+',b.收费方式=a.[收费人/计算机名]FROM web_ShouFei as a INNER JOIN 考生表'+ltrim(@cs)+' as b ON a.主键编号 = b.主键编号WHERE (a.是否交费 = '+''''+'1'+''''+' and a.examsort='+ltrim(@cs)+')'exec(@sql)declare @str varchar(2000)set @str='  UPDATE 考生表'+ltrim(@cs)+' SET 身份证号 = REPLACE(身份证号, '+''''+'x'+''''++','+''''+ 'X'+''''+')  update 考生表'+ltrim(@cs)+' set 姓名=replace(姓名,char(10),'''')  update 考生表'+ltrim(@cs)+' set 姓名=replace(姓名,char(13),'''')  update 考生表'+ltrim(@cs)+' set 姓名=replace(姓名,'+' '+','''')  update 考生表'+ltrim(@cs)+' set 姓名=replace(姓名,'+' '+','''')'go
------解决方案--------------------
没这张表啊,语句拼接应该是没问题了,你的表不存在???
  相关解决方案