create proc pro_del_article
@articletitle varchar(200),
@articleBrief text,
@articlecontent ntext,
@aclass int,
@bclass int,
@lasttime datetime,
@img1 varchar(100),
@img2 varchar(100),
@img3 varchar(100),
@condition varchar(100)
as
declare @sql varchar(200)
set @sql='
update Article
set 
[ArticleTitle]='+ @articletitle +',
[ArticleBrief]=' + @articleBrief+',
[ArticleContent]=' + @articlecontent +',
[AclassID]='+ @aclass +',
[BclassID]='+ @bclass +',
[LastTime]='+ @lasttime +',
[img1]=' + @img1 +',
[img2]=' + @img2 +',
[img3]=' + @img3 +'
where' + @conditionexec (@sql)报错信息:服务器: 消息 403,级别 16,状态 1,过程 pro_del_article,行 14
对数据类型而言运算符无效。运算符为 add,类型为 text。

解决方案 »

  1.   

    create proc pro_del_article
    @articletitle varchar(200),
    @articleBrief text,
    @articlecontent ntext,
    @aclass int,
    @bclass int,
    @lasttime datetime,
    @img1 varchar(100),
    @img2 varchar(100),
    @img3 varchar(100),
    @condition varchar(100)
    as
    update Article
    set
    [ArticleTitle]=@articletitle,
    [ArticleBrief]=@articleBrief,
    [ArticleContent]=@articlecontent,
    [AclassID]=@aclass ,
    [BclassID]=@bclass,
    [LastTime]=@lasttime,
    [img1]= @img1,
    [img2]=@img2,
    [img3]=@img3
    where @condition
      

  2.   

    [ArticleBrief]=' + @articleBrief+', 
    不能这样更新。
      

  3.   

    create proc pro_del_article
    @articletitle varchar(200),
    @articleBrief text,
    @articlecontent ntext,
    @aclass int,
    @bclass int,
    @lasttime datetime,
    @img1 varchar(100),
    @img2 varchar(100),
    @img3 varchar(100),
    @condition varchar(100)
    as
    declare @sql nvarchar(max)
    set @sql='
    update Article
    set
    [ArticleTitle]='''+ @articletitle +''',
    [ArticleBrief]=''' + @articleBrief+''',
    [ArticleContent]=''' + @articlecontent +''',
    [AclassID]='''+ @aclass +''',
    [BclassID]='''+ @bclass +''',
    [LastTime]='''+ @lasttime +''',
    [img1]=''' + @img1 +''',
    [img2]=''' + @img2 +''',
    [img3]=''' + @img3 +'''
    where ' + @condition
    exec (@sql) 
      

  4.   

    有text,ntext类型的不能动态拼接字符串,这种情况还是在程序里更新方便
      

  5.   

    服务器: 消息 170,级别 15,状态 1,过程 pro_del_article,行 13
    第 13 行: 'max' 附近有语法错误。
    服务器: 消息 137,级别 15,状态 1,过程 pro_del_article,行 27
    必须声明变量 '@sql'。
    服务器: 消息 137,级别 15,状态 1,过程 pro_del_article,行 27
    必须声明变量 '@sql'。不行呀
      

  6.   


    把text换成varchar(max)
    ntext 换成nvarchar(amx)create proc pro_del_article 
    @articletitle varchar(200), 
    @articleBrief varchar(max), 
    @articlecontent nvarchar(max), 
    @aclass int, 
    @bclass int, 
    @lasttime datetime, 
    @img1 varchar(100), 
    @img2 varchar(100), 
    @img3 varchar(100), 
    @condition varchar(100) 
    as 
    declare @sql varchar(200) 
    set @sql=' 
    update Article 
    set 
    [ArticleTitle]='+ @articletitle +', 
    [ArticleBrief]=' + @articleBrief+', 
    [ArticleContent]=' + @articlecontent +', 
    [AclassID]='+ @aclass +', 
    [BclassID]='+ @bclass +', 
    [LastTime]='+ @lasttime +', 
    [img1]=' + @img1 +', 
    [img2]=' + @img2 +', 
    [img3]=' + @img3 +' 
    where' + @condition 
    print @sql
    exec (@sql) 
      

  7.   

    create proc pro_del_article 
    @articletitle varchar(200), 
    @articleBrief text, 
    @articlecontent ntext, 
    @aclass int, 
    @bclass int, 
    @lasttime datetime, 
    @img1 varchar(100), 
    @img2 varchar(100), 
    @img3 varchar(100), 
    @condition varchar(100) 
    as 
    declare @sql nvarchar(200) 
    set @sql=' 
    update Article 
    set 
    [ArticleTitle]='+ @articletitle+', 
    [ArticleBrief]=' + cast(@articleBrief as nvarchar(8000))+', 
    [ArticleContent]=' + cast(@articlecontent as nvarchar(8000) +', 
    [AclassID]='+ @aclass +', 
    [BclassID]='+ @bclass +', 
    [LastTime]='''+ convert(char(10),@lasttime,120) +''', 
    [img1]=' + @img1 +', 
    [img2]=' + @img2 +', 
    [img3]=' + @img3 +' 
    where' + @condition exec (@sql)