create proc addgongqiu
@Rtitle nvarchar(100),
@Rbody text,
as
declare @str nvarchar(200)
set @str='Insert Into table(Rtitle,Rbody) Values('''+@Rtitle+''','''+@Rbody+''')'
exec(@str)错误提示:对数据类型而言运算符无效。运算符为 add,类型为 text。
其中Rtitle是文章标题
Rbody是新闻内容
当nvarchar和text类型混合时候怎么写存储过程

解决方案 »

  1.   

    --set这句改成这样试试
    set @str='Insert Into [table](Rtitle,Rbody) select @Rtitle,@Rbody'
      

  2.   

    @Rbody text,  --去掉后面的逗号
      

  3.   

    这样试?
    create proc addgongqiu
    @Rtitle nvarchar(100),
    @Rbody text,
    asexec('Insert Into table(Rtitle,Rbody) Values('''+@Rtitle+''','''+@Rbody+''')')
      

  4.   

    create proc addgongqiu
    @Rtitle nvarchar(100),
    @Rbody text
    asexec('Insert Into table(Rtitle,Rbody) Values('''+@Rtitle+''','''+@Rbody+''')')
      

  5.   

    以前试过,当表中字段为Text的时候,写存储过程中插好象总报错,后来把存储过程中的变量设为varchar,再往表中插,就可以了.
      

  6.   

    可是varchar 的最大存储量才16000个字节,远远达不到要求。
      

  7.   

    表的一条记录只能存储8K
    所以, 即使你定义了列为: varchar(8000)
    也必须保证, 你插入的记录的所有列加起来没有超过8K, 否则就会出现截断的现象-- 简单的说, 下面的会出问题
    DECLARE @t TABLE(col1 char(1000), col2 varchar(8000))INSERT @t SELECT '', REPLICATE('a', 8000)
    DECLARE @t TABLE(col1 char(1000), col2 ntext)INSERT @t SELECT '', REPLICATE('a', 8000)
    -----------
    像这样就没有问题
    参考一下这里
    http://community.csdn.net/Expert/topic/5296/5296764.xml?temp=.2846491
      

  8.   

    create proc addgongqiu
    @Rtitle nvarchar(100),
    @Rbody text
    as
    declare @str nvarchar(200)
    set @str='Insert Into table(Rtitle,Rbody) Values('''+@Rtitle+''','''+@Rbody+''')'
    exec(@str)
      

  9.   

    就使用动态语句查询阿  
     
    CREATE  proc  xx  
    @tablename  nvarchar(64)    
    as  
    declare  @sql  nvarchar(200)    
    set  @Sql  =  ’select  id  from‘+◎tablename    
    exec(@sql)