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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM