本人初学t-sql, 想征求asp编写的社区型网站中加为好友功能的存储过程addFriend, 通过对比学习达到提升自己水平的目的。
CREATE TABLE [dbo].[Member] (
[ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL ,
[username] varchar(20) NOT NULL ,
[sex] char(2) NOT NULL
)
GO CREATE TABLE [dbo].[Friend] (
[ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL ,
[Add_User_ID] [int] REFERENCES [dbo].[Member]([ID]) NULL ,
[Friend_User_ID] [int] REFERENCES [dbo].[Member]([ID]) NULL ,
[Add_Datetime] [smalldatetime] default (getdate()) NULL
)
GO CREATE PROCEDURE [dbo].[addFriend]
-----此处所列出的参数仅表达本人意思,参数安排可自定,
@status tinyint output, -----状态输出
@ID int, ---- 被加者ID
@MyID int, ---- 加者的ID
@MySex char(2) ---- 加者的性别
AS
set nocount on
begin .........
/*
说明:
如果被加者不存在返回不存在消息,
如果被加者已是好友返回已是好友消息,
如果被加者和加者性别相同返回性别相同消息, 以上"如果"都不存在则执行添加好友 */.........
end
GO
CREATE TABLE [dbo].[Member] (
[ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL ,
[username] varchar(20) NOT NULL ,
[sex] char(2) NOT NULL
)
GO CREATE TABLE [dbo].[Friend] (
[ID] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL ,
[Add_User_ID] [int] REFERENCES [dbo].[Member]([ID]) NULL ,
[Friend_User_ID] [int] REFERENCES [dbo].[Member]([ID]) NULL ,
[Add_Datetime] [smalldatetime] default (getdate()) NULL
)
GO CREATE PROCEDURE [dbo].[addFriend]
-----此处所列出的参数仅表达本人意思,参数安排可自定,
@status tinyint output, -----状态输出
@ID int, ---- 被加者ID
@MyID int, ---- 加者的ID
@MySex char(2) ---- 加者的性别
AS
set nocount on
begin .........
/*
说明:
如果被加者不存在返回不存在消息,
如果被加者已是好友返回已是好友消息,
如果被加者和加者性别相同返回性别相同消息, 以上"如果"都不存在则执行添加好友 */.........
end
GO
-----此处所列出的参数仅表达本人意思,参数安排可自定,
@ID int, ---- 被加者ID
@MyID int, ---- 加者的ID
@MySex char(2) ---- 加者的性别
AS
set nocount on
begin
if not exists(select 1 from member where id = @myid)
return 1
else
if exists(select 1 from friend where friend_user_id = @id and add_user_id = @myid)
return 2
else
if exists(select 1 from member where id = @id and sex = @mysex)
return 3
else
insert into friend(add_user_id,friend_user_id,add_datetime)
select @myid,@id,@mysex
/*
说明:
如果被加者不存在返回不存在消息,
如果被加者已是好友返回已是好友消息,
如果被加者和加者性别相同返回性别相同消息, 以上"如果"都不存在则执行添加好友 */
end
GO
-----此处所列出的参数仅表达本人意思,参数安排可自定,
@ID int, ---- 被加者ID
@MyID int, ---- 加者的ID
@MySex char(2) ---- 加者的性别
AS
set nocount on
begin
if not exists(select 1 from member where id = @myid)
return 1
else
if exists(select 1 from friend where friend_user_id = @id and add_user_id = @myid)
return 2
else
if exists(select 1 from member where id = @id and sex = @mysex)
return 3
else
begin
insert into friend(add_user_id,friend_user_id,add_datetime)
select @myid,@id,@mysex
return 0
end
/*
说明:
如果被加者不存在返回不存在消息,
如果被加者已是好友返回已是好友消息,
如果被加者和加者性别相同返回性别相同消息, 以上"如果"都不存在则执行添加好友 */
end
GO
--大致是这样,自己改改.另:friend表无性别字段.如果被加者和加者性别相同返回性别相同消息,这个做不了.
CREATE PROCEDURE [dbo].[addFriend]
-----此处所列出的参数仅表达本人意思,参数安排可自定,
@status varchar(20) output, -----状态输出
@ID int, ---- 被加者ID
@MyID int, ---- 加者的ID
@MySex char(2) ---- 加者的性别
AS
set nocount on
begin
declare @i as int
set @i = 0
if not exists (select 1 from friend where Add_User_ID = @myid and Friend_User_ID @ID)
begin
set @status = '如果被加者不存在返回不存在消息'
set @i = 1
end
if exists (select 1 from friend where Add_User_ID = @myid and Friend_User_ID @ID)
begin
set @status = '如果被加者已是好友返回已是好友消息'
set @i = 1
end
if @i = 0
insert 则执行添加好友
end
加者和被加者都是member里的记录,怎么没性别呢????