该为:
declare @sql varcahr(700)
@sql='insert '+@TableName+' ........
exec(@sql)
参数的类型最好用VARCHAR

解决方案 »

  1.   

    先生啊
    你的表名是用参数给出的
    你要用动态执行才可以插入。
    CREATE PROCEDURE InsertRecToStuClassTab
       @ClassID char(6),
       @Gradnumber char(10),
       @Lesson_Code char(4),
       @Lesson_Name char(40),
       @Credite     decimal(4,1),
       @Teacher_no  char(4),
       @Teacher     char(12),
       @Times       int,
       @Time1       char(8),
       @Time2       char(8),
       @Time3       char(8),
       @TimeStr     char(40),
       @ExamType    char(8),
       @Classroom   char(8),
       @Relevant    bit,  
       @Rele_LCod   char(6),
       @OnlyOne     bit,
       @IsZhiyuan   bit,
       @Zycode1     char(4),
       @Zycode2     char(4),
       @College     char(4),
       @TableName   char(20)
    as
       begin transaction
       exec('insert '+@TableName+'values ('
       +@ClassID+','+@Gradnumber+','+@Lesson_Code+','+@Lesson_Name+','+@Credite+','
       +@Teacher_no+','+@Teacher+','+@Times+','
       +@Time1+','+@Time2+','+@Time3+','+@TimeStr+','+@ExamType+','
       +@Classroom+','+@Relevant+','+@Rele_LCod+','+@OnlyOne+','
       +@IsZhiyuan+','+@Zycode1+','+@Zycode2+')')
       if @@error<>0
       begin
          rollback tran
          return
       end   
       commit transaction