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