我要根据输入的表名,向这个输入的表中插入一行记录 
自己写的存储过程有错误,麻烦高手写个 自己写的如下: 
create procedure proc_insert_tst( 
@tstname nvarchar(40),(要插入记录的表名称,也是做为一个参数) 
@tstcha int,//以下都为该表的字段 
@tstdif int, 
@tsttype nvarchar(20), 
@tstanswer nvarchar(4), 
@tstcontent nvarchar(200), 
@tstchoice1 nvarchar(100), 
@tstchoice2 nvarchar(100), 
@tstchoice3 nvarchar(100), 
@tstchoice4 nvarchar(100) 
as 
declare @strsql nvarchar(1000) 
begin 
set @strsql='insert into ['+@tstname+'] (tsttype,tstdif,tstcha,tstcontent,tstchoice1,tstchoice2,tstchoice3,tstchoice4,tstanswer)  '+ 
' values( '+@tsttype+','+str(@tstdif)+','+str(@tstcha)+','+@tstcontent+','+@tstchoice1+','+@tstchoice2+','+@tstchoice3+','+@tstchoice4+','+@tstanswer+')' 
execute sp_executesql @strsql 
end 执行以上存储过程 
exec proc_insert_tst '数据结构',1,3,"单项选择题",'A','www','aa','bb','cc','dd' 总是提示:在此上下文中不允许使用名称 "单项选择题"。有效表达式包括常量、常量表达式和变量(在某些上下文中)。不允许使用列名。 往高手指点

解决方案 »

  1.   


    create procedure proc_insert_tst( 
    @tstname nvarchar(40),(要插入记录的表名称,也是做为一个参数) --表名作為參數,你要確定所有表的字段數相同,字段名相同
    @tstcha int,//以下都为该表的字段 
    @tstdif int, 
    @tsttype nvarchar(20), 
    @tstanswer nvarchar(4), 
    @tstcontent nvarchar(200), 
    @tstchoice1 nvarchar(100), 
    @tstchoice2 nvarchar(100), 
    @tstchoice3 nvarchar(100), 
    @tstchoice4 nvarchar(100) 
    as 
    declare @strsql nvarchar(1000) 
    begin 
    set @strsql='insert into ['+@tstname+'] (tsttype,tstdif,tstcha,tstcontent,tstchoice1,tstchoice2,tstchoice3,tstchoice4,tstanswer)  '+ 
    ' values( '+@tsttype+','+str(@tstdif)+','+str(@tstcha)+','+@tstcontent+','+@tstchoice1+','+@tstchoice2+','+@tstchoice3+','+@tstchoice4+','+@tstanswer+')' 
    execute sp_executesql @strsql 
    end 
      

  2.   

    http://topic.csdn.net/u/20090316/16/c880f56e-94b3-46e6-a8ab-b5315a4a4f8c.html
    这里面已经都正解。
      

  3.   


    exec proc_insert_tst '数据结构',1,3,'单项选择题','A','www','aa','bb','cc','dd'