22,207
社区成员
发帖
与我相关
我的任务
分享
create table vote
(
id int identity(1,1) primary key not null,--投票编号
[uid] int null,--用户编号(跟用户表的用户id联系)
topic varchar(100) not null,--投票主题
content text null,--投票详细说明
[date] datetime default(getdate())not null,--投票发起日期
todate datetime null,--投票截止日期
vconfine varchar(30) null,--投票限制
lconfine varchar(30) null,--点评限制
cont int --投票人数
)
go
create table voteDetail--投票详情表:
(
id int identity(1,1) primary key not null,--编号
vid int null,--投票编号(跟投票表中的id联系)
cand varchar(500) null,--投票选项
[option] varchar(30) null--投票形式
)
go
--建个拆分字符串的函数
CREATE FUNCTION f_splitSTR(
@s varchar(8000), --待分拆的字符串
@split varchar(10) --数据分隔符
)RETURNS @re TABLE(col varchar(100))
AS
BEGIN
DECLARE @splitlen int
SET @splitlen=LEN(@split+'a')-2
WHILE CHARINDEX(@split,@s)>0
BEGIN
INSERT @re VALUES(LEFT(@s,CHARINDEX(@split,@s)-1))
SET @s=STUFF(@s,1,CHARINDEX(@split,@s)+@splitlen,'')
END
INSERT @re VALUES(@s)
RETURN
END
GO
alter proc releaseVote--发布投票
(
@uid int,
@topic varchar(100),
@content text,
@cand varchar(500),
@option varchar(30)
)
as
begin
declare @vid int ,/*投票编号*/ @str varchar(100) ,/*用来分割的变量*/ @id varchar(30)--测试数据
insert into vote(uid,topic,content) values(@uid,@topic,@content)
select @vid = max(id) from vote
insert into voteDetail(vid,cand,[option])
select @vid,*,@option
from dbo.f_splitSTR(@cand,',')--调用函数
end
go
exec releaseVote '','aaaaaa','','王老吉,水溶C100,果粒橙','多选'
select id,topic,content from vote
select id ,vid ,cand from voteDetail
/*
id topic content
----------- -----------------------------------------------------------
1 aaaaaa
(1 行受影响)
id vid cand
----------- ----------- -----------------------
1 1 王老吉
2 1 水溶C100
3 1 果粒橙
(3 行受影响)*/
drop table vote,voteDetail
go
create table vote
(
id int identity(1,1) primary key not null,--投票编号
[uid] int null,--用户编号(跟用户表的用户id联系)
topic varchar(100) not null,--投票主题
content text null,--投票详细说明
[date] datetime default(getdate())not null,--投票发起日期
todate datetime null,--投票截止日期
vconfine varchar(30) null,--投票限制
lconfine varchar(30) null,--点评限制
cont int --投票人数
)
go
create table voteDetail--投票详情表:
(
id int identity(1,1) primary key not null,--编号
vid int null,--投票编号(跟投票表中的id联系)
cand varchar(500) null,--投票选项
[option] varchar(30) null--投票形式
)
go
alter proc releaseVote--发布投票
(
@uid int,
@topic varchar(100),
@content text,
@cand varchar(500),
@option varchar(30)
)
as
declare @vid int , @str varchar(100) ,@s varchar(100)
begin tran
insert into vote(uid,topic,content) values(@uid,@topic,@content)
select @vid = max(id) from vote
set @str=@cand
while charindex(',',@str)>0
begin
set @s=(LEFT(@str,CHARINDEX(',',@str)-1))
insert into voteDetail(vid,cand,[option])
values(@vid,@s,@option)
SET @str=STUFF(@str,1,CHARINDEX(',',@str),'')
end
insert into voteDetail(vid,cand,[option])--
values(@vid,@str,@option)--这里修改了下 可以了 去试试
if(@@error > 0)
rollback
else
commit
go
exec releaseVote '','aaaaaa','','王老吉,水溶C100,果粒橙','多选'
go
select id ,topic, content from vote
select * from voteDetail
drop table vote,voteDetail
go
create table vote
(
id int identity(1,1) primary key not null,--投票编号
[uid] int null,--用户编号(跟用户表的用户id联系)
topic varchar(100) not null,--投票主题
content text null,--投票详细说明
[date] datetime default(getdate())not null,--投票发起日期
todate datetime null,--投票截止日期
vconfine varchar(30) null,--投票限制
lconfine varchar(30) null,--点评限制
cont int --投票人数
)
go
create table voteDetail--投票详情表:
(
id int identity(1,1) primary key not null,--编号
vid int null,--投票编号(跟投票表中的id联系)
cand varchar(500) null,--投票选项
[option] varchar(30) null--投票形式
)
go
alter proc releaseVote--发布投票
(
@uid int,
@topic varchar(100),
@content text,
@cand varchar(500),
@option varchar(30)
)
as
declare @vid int , @str varchar(100) ,@s varchar(100)
begin tran
insert into vote(uid,topic,content) values(@uid,@topic,@content)
select @vid = max(id) from vote
set @str=@cand
while charindex(',',@str)>0
begin
set @s=(LEFT(@str,CHARINDEX(',',@str)-1))
insert into voteDetail(vid,cand,[option])
values(@vid,@s,@option)
SET @str=STUFF(@str,1,CHARINDEX(',',@str),'')
end
insert into voteDetail(vid,cand,[option])
values(@vid,@s,@option)
if(@@error > 0)
rollback
else
commit
go
exec releaseVote '','aaaaaa','','王老吉,水溶C100,果粒橙','多选'
go
select id ,topic, content from vote
select * from voteDetail
set @str=@can
while charindex(',',@str)>0
->改为
while @@rowcount>0