create proc addStudenInformation
(@studentNumber varchar(10),@studentName varchar(10),
@gendar varchar(4))
as
begin
if len(@studenNumber)<9 return--实际情况的需要
declare @tempstr varchar(10)
declare @whichtable varchar(10)
select @tempstr=substring(@studentNumber,2,3)
if @tempstr='01'select @whichtable='01级学生信息'
.......
exec('
insert into ['+@whichtable+']
values('''+@studentName+''','''+@studentNumber+''','''+@gendar+''')')
endgo

解决方案 »

  1.   

    我觉得declare @whichtable varchar(10)定义中@whichtable为10字节,
    而select @whichtable='01级学生信息' 中赋给@whichtable的值所需的空间为12字节(一个汉字需两字节),这有没有问题?请各位指教!
      

  2.   

    我做了一次试验,验证了我的想法是正确的,这里declare @whichtable varchar(n)中n至老少满足n>=12
      

  3.   

    看来是基本功的问题了,能请大力具体解释一下
    exec('insert into ['+@whichtable+']
    values('''+@studentName+''','''+@studentNumber+''','''+@gendar+''')')
    中各个单引号的含义吗?谢谢!