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

时间:2022-11-22 22:53:12
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

不知道是何原因啊,求教。

9 个解决方案

#1


先改你其中一个地方,占这位置


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

#2


语法写错了,你那个不是SQL server的语法哦

#3


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

#4


好了,完整改下,可直接执行:


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


结果:
“命令已成功完成。

#5


全部前面加个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

#6


引用 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
这个怎么回事

#7


set是赋值

#8



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

#9


引用 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
这个怎么回事


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

#1


先改你其中一个地方,占这位置


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

#2


语法写错了,你那个不是SQL server的语法哦

#3


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

#4


好了,完整改下,可直接执行:


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


结果:
“命令已成功完成。

#5


全部前面加个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

#6


引用 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
这个怎么回事

#7


set是赋值

#8



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

#9


引用 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
这个怎么回事


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