存储过程的简单应用
今天教大家如何使用存储过程自动生成一张日历表,我们以SQL Server为操作平台。
问题描述:输入想要生成日历的年份,调用存储过程,即可生成该年的全部日历。
创建表结构
CREATE TABLE CALENDAR_INFO ( DATE_NAME VARCHAR(20) PRIMARY KEY, YEAR VARCHAR(10), MONTH VARCHAR(10), WEEK VARCHAR(10), DAY VARCHAR(10) )
创建存储过程
思路:我们传递进一个INT型的参数给存储过程,表示年份,然后取这一年有多少天,从1月1日循环累加到12月31日,并将每天的相关信息都插入到表中,这样一整年的完整日历就完成了。
if exists (select * from sys.procedures where name = 'PROC_CALENDAR') drop proc PROC_CALENDAR GO CREATE PROC PROC_CALENDAR @year int AS BEGIN DECLARE @i INT; DECLARE @start_day varchar(20); DECLARE @end_day varchar(20); DECLARE @day_count INT; DECLARE @today DATETIME; SET @i=0 --定义一年的开始日期,用CONCAT函数将年份和月份日期拼接起来 SET @start_day=CONCAT(@year,'-01-01') --定义一年的结束日期 SET @end_day=CONCAT(@year+1,'-01-01') --DATEDIFF函数计算日期的间隔天数 SET @day_count=DATEDIFF(DAY,@start_day,@end_day) --把@start_day转成datetime,赋值给@today SET @today=CONVERT(DATETIME,@start_day) WHILE @i< @day_count BEGIN INSERT INTO CALENDAR_INFO VALUES( CONVERT(VARCHAR(10),@today,23), STR(@year), DATENAME(MONTH,@today), --返回月份 DATENAME(WEEKDAY,@today), --返回星期几 DATENAME(DAY,@today) --返回日期 ) SET @i=@i+1 SET @today=CONVERT(CHAR(10),DATEADD(DAY,1,@today),23) --天数加1 END END
调用存储过程
EXEC PROC_CALENDAR 2020
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署