CREATE PROC SP_Friends
(
   @send_id       int,
   @receive_id    int,
   @rtn           int=0 output
)
as
  begin
      declare @sql nvarchar(2000)
      declare @flag int
      
      set @sql = 'select @rtn=count(*), @flag from Friends where (send_user_id=@send_id and receive_user_id=@receive_id) or (send_user_id=@receive_id and receive_user_id=@send_id)'
      
      exec sp_executesql @sql, N'@rtn int output, @flag int, @send_id int, @receive_id int', @rtn output, @flag, @send_id, @receive_id
      
      if (@rtn > 0)
         
         begin 
           if (@flag == 0)
              set @rtn = 1
           set @rtn = 2
         end
      ---如果没有这两个人成为朋友的记录         
      if (@rtn <= 0)
         begin
           exec('insert into Friends (send_user_id, receive_user_id) values (' + send_id + ', ' + receive_id + ')')
         end
      if @@error > 0
    
         rollback tran
  end
提示错误:
服务器: 消息 170,级别 15,状态 1,过程 SP_Friends,行 19
第 19 行: '=' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 SP_Friends,行 26
第 26 行: 'send_id' 附近有语法错误。谢谢大家!

解决方案 »

  1.   


    if (@flag == 0)  --你多了一个等于号
     exec('insert into Friends (send_user_id, receive_user_id) values (' + send_id + ', ' + receive_id + ')')
    --这句两个变量你没有@符号
      

  2.   


    SQL中判断相等不是==而是=吗?
    下面那个错误就是大意的问题啦,谢谢兄弟!
      

  3.   

    CREATE PROC SP_Friends
    (
       @send_id       int,
       @receive_id    int,
       @rtn           int=0 output
    )
    as
      begin
          declare @sql nvarchar(2000)
          declare @flag int
          
          set @sql = 'select @rtn=count(*), @flag from Friends where (send_user_id=@send_id and receive_user_id=@receive_id) or (send_user_id=@receive_id and receive_user_id=@send_id)'
          
          exec sp_executesql @sql, N'@rtn int output, @flag int, @send_id int, @receive_id int', @rtn output, @flag, @send_id, @receive_id
          
          if (@rtn > 0)
             
             begin 
               if (@flag = 0)
                  set @rtn = 1
               set @rtn = 2
             end
          ---如果没有这两个人成为朋友的记录         
          if (@rtn <= 0)
             begin
               set @sql='insert into Friends (send_user_id, receive_user_id) values (' + rtrim(@send_id) + ', ' + rtrim(@receive_id) + ')'
               exec(@sql)
             end
          if @@error > 0
        
             rollback tran
      end
      

  4.   

    SQL中判斷相等用=,不等用<> 或!=