zoukankan      html  css  js  c++  java
  • 存储过程的简单应用

    今天教大家如何使用存储过程自动生成一张日历表,我们以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

  • 相关阅读:
    MathType如何插入竖直线
    MongoDB时间类型
    《穆斯林的葬礼》读书笔记
    Fluentd安装——通过rpm方式
    MongoDB安装、管理工具、操作
    Flask服务入门案例
    python判断类型
    linux硬链接与软链接
    python 环境问题
    Linux进程管理工具——supervisor
  • 原文地址:https://www.cnblogs.com/xiaohuhu/p/13212796.html
Copyright © 2011-2022 走看看