存储过程提示 消息 102,级别 15,状态 1,Incorrect syntax near '@sql'.

yghuaa 2013-12-27 04:51:44
create proc VS
as
begin
declare @sql nvarchar(max)
declare @Site nvarchar(50)
declare @pono nvarchar(300)
declare @applier nvarchar(max)
declare @number nvarchar(300)
declare @state nvarchar(50)
declare @person nvarchar(100)
if (len(@Site)=0)
begin
@sql+=@Site //提示这一行有误
end
if(len(@pono)=0 )
begin
@sql+=@pono //提示这一行有误

end
if(len(@applier)=0 )
begin
@sql+=@applier //提示这一行有误

end
if(len(@number)=0 )
begin
@sql+=@number //提示这一行有误

end
if(len(@state)=0)
begin
@sql+=@state //提示这一行有误


end
if(len(@person)=0)
begin

@sql+=@person //提示这一行有误

end

不知道是何原因啊,求教。
...全文
461 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
orochiheart 2013-12-31
  • 打赏
  • 举报
回复
引用 6 楼 ITX2000 的回复:
[quote=引用 2 楼 hwhmh2010 的回复:] 语法写错了,你那个不是SQL server的语法哦
引用 3 楼 u010192842 的回复:
create proc VS as begin declare @sql nvarchar(max) declare @Site nvarchar(50) declare @pono nvarchar(300) declare @applier nvarchar(max) declare @number nvarchar(300) declare @state nvarchar(50) declare @person nvarchar(100) if (len(@Site)=0) begin set @sql=@sql+@Site --提示这一行有误 end end 赋值要用set
我该了下: create proc VS declare @Site nvarchar(50) //Incorrect syntax near the keyword 'declare'. declare @pono nvarchar(300) declare @applier nvarchar(max) declare @number nvarchar(300) declare @state nvarchar(50) declare @person nvarchar(100) as //Incorrect syntax near the keyword 'as'. begin declare @sql nvarchar(max) set @sql='' if (len(@Site)=0) begin set @sql=@Site+@sql end if(len(@pono)=0 ) begin 这个怎么回事[/quote]

create proc VS
as    
begin
declare @Site nvarchar(50)  
declare @pono nvarchar(300)
declare @applier nvarchar(max)
declare @number nvarchar(300)
declare @state nvarchar(50)
declare  @person nvarchar(100)
declare @sql nvarchar(max)
 set @sql=''
   if (len(@Site)=0)
   begin
   set @sql=@Site+@sql
   end
end
orochiheart 2013-12-31
  • 打赏
  • 举报
回复

create proc VS
as    
begin
declare @Site nvarchar(50)  
declare @pono nvarchar(300)
declare @applier nvarchar(max)
declare @number nvarchar(300)
declare @state nvarchar(50)
declare  @person nvarchar(100)
declare @sql nvarchar(max)
 set @sql=''
   if (len(@Site)=0)
   begin
   set @sql=@Site+@sql
   end
end

發糞塗牆 2013-12-27
  • 打赏
  • 举报
回复
set是赋值
yghuaa 2013-12-27
  • 打赏
  • 举报
回复
引用 2 楼 hwhmh2010 的回复:
语法写错了,你那个不是SQL server的语法哦
引用 3 楼 u010192842 的回复:
create proc VS as begin declare @sql nvarchar(max) declare @Site nvarchar(50) declare @pono nvarchar(300) declare @applier nvarchar(max) declare @number nvarchar(300) declare @state nvarchar(50) declare @person nvarchar(100) if (len(@Site)=0) begin set @sql=@sql+@Site --提示这一行有误 end end 赋值要用set
我该了下: create proc VS declare @Site nvarchar(50) //Incorrect syntax near the keyword 'declare'. declare @pono nvarchar(300) declare @applier nvarchar(max) declare @number nvarchar(300) declare @state nvarchar(50) declare @person nvarchar(100) as //Incorrect syntax near the keyword 'as'. begin declare @sql nvarchar(max) set @sql='' if (len(@Site)=0) begin set @sql=@Site+@sql end if(len(@pono)=0 ) begin 这个怎么回事
發糞塗牆 2013-12-27
  • 打赏
  • 举报
回复
全部前面加个set
create proc VS
as 
begin
declare @sql nvarchar(max)
declare @Site nvarchar(50)
declare @pono nvarchar(300)
declare @applier nvarchar(max)
declare @number nvarchar(300)
declare @state nvarchar(50)
declare  @person nvarchar(100)
   if (len(@Site)=0)
   begin
set   @sql+=@Site //提示这一行有误
   end
   if(len(@pono)=0 )
   begin
 set  @sql+=@pono  //提示这一行有误

   end
   if(len(@applier)=0 )
   begin
  set @sql+=@applier //提示这一行有误

   end
   if(len(@number)=0 )
   begin
 set  @sql+=@number  //提示这一行有误

   end
   if(len(@state)=0)
   begin
    set @sql+=@state  

    
   end
   if(len(@person)=0)
   begin
   
  set  @sql+=@person 

   end
山寨DBA 2013-12-27
  • 打赏
  • 举报
回复
好了,完整改下,可直接执行:

create proc VS
 as 
 begin
	 declare @sql nvarchar(max)
	 declare @Site nvarchar(50)
	 declare @pono nvarchar(300)
	 declare @applier nvarchar(max)
	 declare @number nvarchar(300)
	 declare @state nvarchar(50)
	 declare  @person nvarchar(100)
		if (len(@Site)=0)
		begin
			set	@sql=@sql+@Site
		end
		if(len(@pono)=0 )
		begin
			set @sql=@sql+@pono 
		end
		if(len(@applier)=0 )
		begin
		   set @sql=@sql+@applier
		end
		if(len(@number)=0 )
		begin
		set @sql=@sql+@number 
		end
		if(len(@state)=0)
		begin
			set @sql=@sql+@state
		end
		if(len(@person)=0)
		begin
			set @sql=@sql+@person
		end
	end
结果: “命令已成功完成。 ”
Yole 2013-12-27
  • 打赏
  • 举报
回复
create proc VS as begin declare @sql nvarchar(max) declare @Site nvarchar(50) declare @pono nvarchar(300) declare @applier nvarchar(max) declare @number nvarchar(300) declare @state nvarchar(50) declare @person nvarchar(100) if (len(@Site)=0) begin set @sql=@sql+@Site --提示这一行有误 end end 赋值要用set
山寨DBA 2013-12-27
  • 打赏
  • 举报
回复
语法写错了,你那个不是SQL server的语法哦
山寨DBA 2013-12-27
  • 打赏
  • 举报
回复
先改你其中一个地方,占这位置


 if (len(@Site)=0)
    begin
		set	@sql=@Site+@sql
	end

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧