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' 附近有语法错误。谢谢大家!
if (@flag == 0) --你多了一个等于号
exec('insert into Friends (send_user_id, receive_user_id) values (' + send_id + ', ' + receive_id + ')')
--这句两个变量你没有@符号
SQL中判断相等不是==而是=吗?
下面那个错误就是大意的问题啦,谢谢兄弟!
(
@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