关于带参数表名的存储过程
我想实现输入参数即可执行的过程,可是报错?怎么解决
declare @cs int
creat proc sp_kssjzl @cs int
as
alter table 考生表@cs add tel nvarchar(@cs0)
alter table 考生表@cs add 交费标志 nvarchar(10)
alter table 考生表@cs add 交费序号 nvarchar(10)
alter table 考生表@cs add 收费方式 nvarchar(10)
alter table 考生表@cs add 网报日期 nvarchar(10)
UPDATE 考生表@cs SET 网报日期=报考日期,tel=联系电话 where 网报日期 is null
UPDATE 考生表@cs SET 交费标志 = NULL,交费序号 = NULL,收费方式=NULL
UPDATE b SET b.交费序号 = a.收费序号, b.交费标志 = 'bmjf',b.收费方式=a.[收费人/计算机名]
FROM web_ShouFei as a INNER JOIN 考生表@cs as b ON a.主键编号 = b.主键编号
WHERE (a.是否交费 = '1' and a.examsort='@cs')
UPDATE 考生表@cs SET 身份证号 = REPLACE(身份证号, 'x', 'X')
update 考生表@cs set 姓名=replace(姓名,char(10),'')
update 考生表@cs set 姓名=replace(姓名,char(13),'')
update 考生表@cs set 姓名=replace(姓名,' ','')
update 考生表@cs set 姓名=replace(姓名,' ','')
go
[解决办法]
表名或者字段名为变量的时候 要用动态SQL
[解决办法]
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 考生表@cs SET 网报日期=报考日期,tel=联系电话 where 网报日期 is nullUPDATE 考生表@cs 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
[解决办法]
没这张表啊,语句拼接应该是没问题了,你的表不存在???