CREATE procedure bbs_write_text
@table_name varchar(50),    ---//表编号---对应bbs_board中id字段变量
@UserName   varchar(50),
@Subject    varchar(1000),
@Content   text
as
declare @sql varchar(1000)
set @sql='insert '+@table_name+' (ParentID,PostTime,UserName,Subject,Content) values(0,getdate(),'''+@UserName+''','''+@Subject+''','''+@Content+''')'
exec(@sql)GO--你那样写,真正执行语句的时候,是没有单引号的。下次问问题的时候,把出错的信息也带上

解决方案 »

  1.   

    兄台我知道单引号是表示字符串的作用
    用我上面的语句提示:
    服务器: 消息 403,级别 16,状态 1,过程 bbs_write_text,行 8
    对数据类型而言运算符无效。运算符为 add,类型为 text。
      

  2.   

    @Content   text
    把这个定义为字符串型,动态SQL中中允许用字符串型的,或者你在语句中再进行转换也可以
      

  3.   

    上面应该是:只允许....
    exec()运行的语句必须保证是char,varchar,nchar,nvarchar型的
      

  4.   

    请教各位兄台:能否写一个作用和我下面的存储过程相同的存储过程CREATE procedure bbs_write_text
    @table_name varchar(50),    ---//表编号---对应bbs_board中id字段变量
    @UserName   varchar(50),
    @Subject    varchar(1000),
    @Content   text
    as
    declare @sql varchar(1000)
    set @sql='insert '+@table_name+' (ParentID,PostTime,UserName,Subject,Content) values(0,getdate(),'+@UserName+','+@Subject+','+@Content+')'
    exec(@sql)GO
      

  5.   

    CREATE procedure bbs_write_text
    @table_name varchar(50),    ---//表编号---对应bbs_board中id字段变量
    @UserName   varchar(50),
    @Subject    varchar(1000),
    @Content   varchar(8000)
    as
    declare @sql varchar(1000)
    set @sql='insert '+@table_name+' (ParentID,PostTime,UserName,Subject,Content) values(0,getdate(),'''+@UserName+''','''+@Subject+''','''+@Content+''')'
    exec(@sql)GO
      

  6.   


    感谢 yjdn(无尽天空)..我照写了一个我想问两个单引号在SQL语句中表示一个单引号吗?CREATE procedure bbs_write_text5
    @table_name varchar(50),    ---//表编号---对应bbs_board中id字段变量
    @UserName   varchar(50),
    @Subject    varchar(1000),
    @Content   text
    as
    declare @table varchar(50)
    set @table = @table_name
    exec('insert '+@table+' (ParentID,PostTime,UserName,Subject,Content) values(0,getdate(),'''+@UserName+''','''+@Subject+''','''+@Content+''')')
    GO