注册 登录
编程论坛 ASP.NET技术论坛

数据库设置问题

beblue 发布于 2008-03-05 16:39, 679 次点击
?    学生编号:该字段唯一标识一个学生。通过程序自动生成学生编号,生成规则为入学日期所在年份+4位流水号,其中,流水号为同一年份的最后一个编号加1,如果该年份第一个学生,则编号为:入学日期所在年份+0001。如:2007年第一个学生的编号,则为:20070001,那么第2个学号则为:20070002,以此类推。


哪个能详细跟我说说这个怎么写啊
2 回复
#2
sjxwb2008-03-05 20:46
在程序中控制。
先统计一下数据库中行数,在此基础上+1
#3
beblue2008-03-06 11:13
大概是这样写的
select isnull(max(SID)+1,cast(year(getdate()) as char(4))+'0001')  //true时返回最大值加1,false里返回转为char类型的当前年份再加0001
from studentinfo  
where cast(max(SID) as varchar(4))=cast(year(getdate())  //当年份等于最在值年份时


但是我不知道怎么把这个结果到加存储过程的参数中去
USE [Student]
GO
CREATE PROCEDURE [insert_SInfo_proc]
    (@SID     [char](8),
     @SName    [varchar](50),
     @SCity     [varchar](50),
     @SCounty     [varchar](50),
     @SInTime     [datetime],
     @SBirtyDay     [datetime],
     @SEmail     [varchar](20),
     @SSex     [char](2),
     @SSkill     [char](10),
     @SRemarks    [varchar](100))

AS INSERT INTO [Student].[dbo].[SInfo]
     ( [SID],
     [SName],
     [SCity],
     [SCounty],
     [SInTime],
     [SBirtyDay],
     [SEmail],
     [SSex],
     [SSkill],
     [SRemarks])
 
VALUES
    ( @SID,
     @SName,
     @SCity,
     @SCounty,
     @SInTime,
     @SBirtyDay,
     @SEmail,
     @SSex,
     @SSkill,
     @SRemarks)

麻烦你再帮我看看
1