国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
用存儲過程模板構建存儲過程

用存儲過程模板構建存儲過程

最近一直在處理存儲過程的問題,一個很大的問題就是構建大量的類似結構、類似功能的存儲過程,大部分都是重復性勞動,想要直接用程序通過存儲過程去構建這類的存儲過程,卻由于開發(fā)體系的局限,不能完全的控制,只好用程序控制參數(shù),由存儲過程來構建具體的存儲過程。
 
/******
Object:  Stored Procedure [dbo].[SMS_WEBADMIN_II_make_StoredProcedure] 生成存儲過程
 ******/
IF EXISTS (SELECT * FROM dbo.sysobjects where id = object_id(N‘[dbo].[SMS_WEBADMIN_II_make_StoredProcedure]‘) and OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)
 DROP PROCEDURE [dbo].[SMS_WEBADMIN_II_make_StoredProcedure]
GO
CREATE PROCEDURE [dbo].[SMS_WEBADMIN_II_make_StoredProcedure]
 @strName nvarchar(100) = ‘‘, --存儲過程名
 @intTPL int = 0, --存儲過程模板
 
 @strVar01 nvarchar(100) = ‘‘, --參數(shù)
 @strVar02 nvarchar(100) = ‘‘, --參數(shù)
 @strVar03 nvarchar(100) = ‘‘, --參數(shù)
 @strVar04 nvarchar(100) = ‘‘, --參數(shù)
 @strVar05 nvarchar(100) = ‘‘, --參數(shù)
 @strVar06 nvarchar(100) = ‘‘, --參數(shù)
 @strVar07 nvarchar(100) = ‘‘, --參數(shù)
 @strVar08 nvarchar(100) = ‘‘, --參數(shù)
 @strVar09 nvarchar(100) = ‘‘, --參數(shù)
 @strVar10 nvarchar(100) = ‘‘, --參數(shù)
 @strVar11 nvarchar(100) = ‘‘, --參數(shù)
 @strVar12 nvarchar(100) = ‘‘, --參數(shù)
 @strVar13 nvarchar(100) = ‘‘ --參數(shù)
AS
DECLARE @strSQL nvarchar(4000) --SQL語句
DECLARE @strSPLIT varchar(5) --分行符
SET @strSPLIT = ‘ ‘ + CHAR(13) + ‘ ‘
DECLARE @isDEBUG bit --DEBUG信息輸出 0 不輸出 1 輸出
SET @isDEBUG = 1
SET ANSI_NULLS ON
SET ANSI_WARNINGS ON
SET NOCOUNT ON
IF (LEN(@strName)>0)
 BEGIN
  --清理以前的存儲過程
  IF EXISTS (SELECT * FROM dbo.sysobjects where id = object_id(@strName) and OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)
   BEGIN
    SET @strSQL= N‘DROP PROCEDURE ‘ + @strName + ‘ ‘
    IF (@isDEBUG>0)
     PRINT(@strSQL)
    EXEC(@strSQL)
   END 
  IF (@intTPL=1) 
   BEGIN
    --模板 分頁列表
    IF (@isDEBUG>0)
     PRINT(‘TEMPLETE:‘+CONVERT(varchar(11),@intTPL))
     
    SET @strSQL =  N‘CREATE PROCEDURE ‘ + @strName + @strSPLIT +
        ‘@intPages int = 1,‘ + @strSPLIT + --頁碼,0 取出分頁數(shù)據(jù) 1 取出具體頁碼信息
        ‘@intRecordPerPage int = 10,‘ + @strSPLIT + --每頁記錄數(shù)
        ‘@strOrderBy nvarchar(200) = ‘‘‘‘,‘ + @strSPLIT + --排序條件
        ‘@strMobile varchar(15) = ‘‘‘‘,‘ + @strSPLIT + --關鍵字 手機號
        ‘@dateBeginDate datetime = ‘‘‘‘,‘ + @strSPLIT + --起始時間
        ‘@dateEndDate datetime = ‘‘‘‘‘ + @strSPLIT + --結束時間
        
       ‘AS‘ + @strSPLIT +
      
       ‘DECLARE @strSQL nvarchar(4000)‘ + @strSPLIT + --SQL語句
       ‘DECLARE @strSQLAddOn nvarchar(1000)‘ + @strSPLIT + --附加SQL語句
      
       ‘DECLARE @intRecordBegin int‘ + @strSPLIT + --開始記錄數(shù)
       ‘DECLARE @intTotalRecord int‘ + @strSPLIT + --總記錄數(shù)
       ‘DECLARE @intMaxPage int‘ + @strSPLIT + --最大頁數(shù)
      
       ‘DECLARE @isDEBUG bit‘ + @strSPLIT + --DEBUG信息輸出 0 不輸出 1 輸出
       ‘SET @isDEBUG = 0‘ + @strSPLIT +
      
       ‘SET @intTotalRecord = 0‘ + @strSPLIT +
       ‘SET @strSQLAddOn = ‘‘‘‘‘ + @strSPLIT +
      
       ‘IF (@intRecordPerPage<0)‘ + @strSPLIT +
        ‘SET @intRecordPerPage = 10‘ + @strSPLIT +
       ‘IF (LEN(@strMobile)>0)‘ + @strSPLIT +
        ‘SET @strSQLAddOn = @strSQLAddOn + ‘‘AND ‘ + @strVar08 + ‘ =‘‘‘‘ + @strMobile + ‘‘‘‘ ‘‘‘ + @strSPLIT +
      
       ‘IF (@dateBeginDate < ‘‘2000-01-01‘‘)‘ + @strSPLIT +
        ‘SET @dateBeginDate = ‘‘2000-01-01‘‘‘ + @strSPLIT +
       ‘IF ((@dateEndDate < @dateBeginDate) OR (@dateEndDate > getdate()) )‘ + @strSPLIT +
        ‘SET @dateEndDate = getdate()‘ + @strSPLIT +
       ‘SET @strSQLAddOn = @strSQLAddOn + ‘‘ AND ( ‘ + @strVar06 + ‘ BETWEEN ‘‘‘‘‘‘ + CONVERT(varchar(22),@dateBeginDate,20) + ‘‘‘‘‘‘ AND ‘‘‘‘‘‘ + CONVERT(varchar(22),@dateEndDate,20) + ‘‘‘‘‘‘ ) ‘‘‘ + @strSPLIT +
      
       ‘IF (LEN(@strOrderBy) < 1)‘ + @strSPLIT +
        ‘SET @strOrderBy = ‘‘‘ + @strVar05 + ‘ DESC‘‘‘ + @strSPLIT +
      
       ‘SET ANSI_NULLS ON‘ + @strSPLIT +
       ‘SET ANSI_WARNINGS ON‘ + @strSPLIT +
       ‘SET NOCOUNT ON‘ + @strSPLIT +
      
       ‘SET @strSQL = N‘‘SELECT @intTotalRecord=ISNULL(COUNT(*),0) ‘‘ +‘ + @strSPLIT +
                       ‘‘‘FROM ‘ + @strVar01 + @strVar03 + @strVar02 + @strVar04 +‘ ‘‘ + ‘ + @strSPLIT +
                       ‘‘‘WHERE 1=1 ‘‘ + @strSQLAddOn‘ + @strSPLIT +
       ‘IF (@isDEBUG>0)‘ + @strSPLIT +
        ‘PRINT(@strSQL)‘ + @strSPLIT +
       ‘EXECUTE sp_executesql @strSQL,N‘‘@intTotalRecord int OUTPUT‘‘,@intTotalRecord OUTPUT‘ + @strSPLIT +
      
       ‘IF (@intPages < 1 )‘ + @strSPLIT +
        ‘BEGIN‘ + @strSPLIT +
         ‘SET @strSQL = ‘‘SELECT ‘‘ + CONVERT(varchar(11),@intTotalRecord)+ ‘‘ AS TotalRecord ‘‘‘ + @strSPLIT +
        ‘END‘ + @strSPLIT +
       ‘ELSE‘ + @strSPLIT +
        ‘BEGIN‘ + @strSPLIT +
         ‘SET @intMaxPage = (@intTotalRecord)/(@intRecordPerPage)‘ + @strSPLIT +
         ‘SET @intMaxPage = CAST(@intMaxPage AS int)‘ + @strSPLIT +
         ‘IF ((@intTotalRecord%@intRecordPerPage)>0)‘ + @strSPLIT +
          ‘SET @intMaxPage = @intMaxPage + 1‘ + @strSPLIT +
         ‘IF (@intPages>@intMaxPage)‘ + @strSPLIT +
          ‘SET @intPages = @intMaxPage‘ + @strSPLIT +
         ‘IF (@intPages<1)‘ + @strSPLIT +
          ‘SET @intPages = 1‘ + @strSPLIT +
         ‘SET @intRecordBegin=@intRecordPerPage*(@intPages-1)‘ + @strSPLIT +
         
         ‘SET @strSQL = ‘‘SELECT TOP ‘‘ + CONVERT(varchar(11),@intRecordPerPage)+ ‘‘  ‘ + @strVar05 + ‘,CONVERT(varchar(23),‘ + @strVar06 + ‘,21) AS ‘ + @strVar06 + ‘,‘ + @strVar07 + ‘,‘ + @strVar08 + ‘,‘ + @strVar09 + ‘,‘ + @strVar10 + ‘ ‘‘ +‘ + @strSPLIT +
                         ‘‘‘FROM ‘ + @strVar01 + @strVar03 + @strVar02 + @strVar04 + ‘ ‘‘ +‘ + @strSPLIT +
                        ‘‘‘WHERE (‘ + @strVar05 + ‘ NOT IN ‘‘ +‘ + @strSPLIT +
                               ‘‘‘(SELECT TOP ‘‘ + CONVERT(varchar(11),@intRecordBegin) + ‘‘ ‘ + @strVar05 + ‘ ‘‘ +‘ + @strSPLIT +
                                  ‘‘‘FROM ‘ + @strVar01 + @strVar03 + @strVar02 + @strVar04 + ‘ ‘‘ +‘ + @strSPLIT +
                                 ‘‘‘WHERE 1=1 ‘‘ + @strSQLAddOn + ‘‘ ‘‘ +‘ + @strSPLIT +
                                 ‘‘‘ORDER BY‘‘ + @strOrderBy+‘‘) ) ‘‘ + @strSQLAddOn +‘ + @strSPLIT +
                        ‘‘‘ORDER BY‘‘ + @strOrderBy + ‘‘ ‘‘‘ + @strSPLIT +
        ‘END‘ + @strSPLIT +
        ‘IF (@isDEBUG>0)‘ + @strSPLIT +
        ‘PRINT(@strSQL)‘ + @strSPLIT +
        ‘EXECUTE(@strSQL)‘ + @strSPLIT +
      
       ‘SET NOCOUNT OFF‘
      
    IF (@isDEBUG>0)
     PRINT(‘SQL:‘+@strSQL)
    IF (@isDEBUG>0)
     PRINT(‘LENGTH:‘+CONVERT(varchar(11),LEN(@strSQL)))
    EXEC(@strSQL) 
   END 
      
 END
SET NOCOUNT OFF
GO
 
調用時模板1的參數(shù)一個例子

SMS_WEBADMIN_II_make_StoredProcedure ‘test_001‘,1,‘[ip].‘, ‘[dbuser].‘,‘[dbname].‘,‘[dbtable]‘,‘[id]‘,‘[date]‘,‘[spnum]‘, ‘[mobile]‘,‘[content]‘,‘[city]‘
 
其中的存儲過程名字和參數(shù),全部交給程序來控制,不管是再放到數(shù)據(jù)庫里面還是簡單的用array來控制,就是極為方便的。
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
sql2005創(chuàng)建存儲過程
《SQLServer數(shù)據(jù)庫應用基礎教程》第八章存儲過程及其應用
將SQLServer表、視圖、存儲過程的所有者批量改為dbo的處理方法
MySQL PROCEDURE 存儲過程
存儲過程從入門到精通(轉載)
MySQL簡單自動執(zhí)行存儲過程模板
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服