zoukankan      html  css  js  c++  java
  • SqlServer 创建存储过程

    一、普通带参数存储过程

    --创建存储过程
    if (exists (select * from sys.objects where name = 'proc_getTotalRecords'))
        drop proc proc_getTotalRecords
    go
    create proc proc_getTotalRecords
    (@year int)
    as
    begin
        declare    @sqlWhere nvarchar(4000)='',
        @sqlData nvarchar(4000)='';
        
        if(@year>1975 and @year is not null)
            begin
                set @sqlWhere+='and DATEPART(YYYY,RECORD_TIME)= '+ convert(varchar, @year)
            end
        set @sqlData=' select DATEPART(MM,RECORD_TIME) name,count(*)  value from 表名 where 1=1'
        +@sqlWhere+
        ' group by DATEPART(MM,RECORD_TIME)'
          EXEC SP_EXECUTESQL @sqlData
        
    end
    go

    二、带输出参数+条件拼接的存储过程

    if (exists (select * from sys.objects where name = 'proc_getTotalRecordsByUser'))
        drop proc proc_getTotalRecordsByUser
    go
    create proc proc_getRecordsByUser
    (@year int,@userId int,@code int output)
    as
    begin
        declare    @sqlWhere nvarchar(4000)='',
        @sqlData nvarchar(4000)='';
        
        if(@year>1975 and @year is not null)
            begin
                set @sqlWhere+='and DATEPART(YYYY,RECORD_TIME)= '+ convert(varchar, @year)
            end
        if(@userId>0 and @year is not null)
        begin
            if((select count(*) from XH_RECORD r where exists
            (select * from SYS_USER u where r.USER_CODE=u.ID and r.USER_CODE=@userId))>0)
                begin
                SELECT @code=200
                set @sqlWhere+='and USER_CODE= '+ convert(varchar, @userId)
                end
            else 
                begin
                    SELECT @code=-200
                    return;
                end
        end
        set @sqlData=' select DATEPART(MM,RECORD_TIME) name,count(*)  value from XH_RECORD where 1=1'
        +@sqlWhere+
        ' group by DATEPART(MM,RECORD_TIME)'
          EXEC SP_EXECUTESQL @sqlData
        
    end
  • 相关阅读:
    web总结
    工作总结
    python积累
    学习地图
    position:absolute绝对定位解读
    利用C++ RAII技术自动回收堆内存
    C++封装常用对象和对头文件探索
    String.split()方法你可能不知道的一面
    动态内存分配(new)和释放(delete)
    C#实现的异步Socket服务器
  • 原文地址:https://www.cnblogs.com/ABC-wangyuhan/p/14693746.html
Copyright © 2011-2022 走看看