三个很常用的存储过程(downmoon)

201 篇文章 0 订阅
75 篇文章 0 订阅

两个很常用的存储过程 

1 用于产生10条评论数据

SET  QUOTED_IDENTIFIER  ON
GO
SET  ANSI_NULLS  ON
GO

/* 存储过程,用于产生10条评论数据 */

--  -- -- -- delete from reviews where operateID>15
--
 -- -- --
--
 -- -- -- delete from contentinfos where ObjectType=5


ALTER         proc  Create100Comments
as
declare   @i   int
declare   @ContentID   bigint
set   @i = 1
while   @i <= 10
begin

        
BEGIN   TRAN
         
if @@error   !=   0  )
            
goto  ErrorHandler
        
commit   tran

    
INSERT   INTO   [ ContentInfos ]
        ( CategoryID,Source,
                    ObjectType,ClickCount,
                    ReviewCount,Grade,
                    VoteCount,CommendCount,
                    AuthorID,BlogID,
                    Size,CollectionTime,
                    IsActive,Keyword,
                    CollectionUser,OriginalID,
                    OriginalURL,F1,
                    F2,F3,
                    F4)
    
VALUES
        ( 
15 , '' ,
                    
5 , 100 ,
                    
100 , 1000 ,
                    
100 , 99 ,
                    
54 , 204562 ,
                    
10000 , getdate (),
                    
0 , '' ,
                    
' testuser ' , 999 ,
                    
' testurl ' , 100 ,
                    
100 , '' ,
                    
'' )

    
SET   @ContentID   =  IDENT_CURRENT( ' ContentInfos ' )
    
INSERT   INTO   Reviews (CellID ,  PortalID ,  UserID ,  ContentID ,  OperateTitle ,  OperateContent ,  OperateDateTime ,  BlogID ,  BlogTitle ,  OperateUserID ,  UserName ,  UserNick ,  CBlogName ,  OperateEmail ,  OperateIP ,  IsAnonymous ,  IsActive ,  OperateHomePage ,  OperateType ,  OperateValue )
        
VALUES ( @i @i @i @ContentID ' 操作标题 ' ' 评论内容1<br>评论内容2<br>评论内容1<br><br><br>< br>评论内容2<br><br><br><br><br>评论内容2< br><br><br><br><br>评论内容4<br> ' getdate (),  @i ' Blog标题 ' @i ' 用户名称 ' ' 用户呢称 ' ' Blog名称 ' ' test@126.com ' ' 124.458.135.500 ' 0 1 ' http://www.blogcn.com ' 1 @i )


           
    
if @@error   !=   0  )
        
goto  ErrorHandler

ErrorHandler:
    
if @@error   !=   0  )
    
begin
        
rollback   tran
    
end
set   @i = @i + 1

end

GO
SET  QUOTED_IDENTIFIER  OFF
GO
SET  ANSI_NULLS  ON
GO


2 产生分页的存储过程

SET  QUOTED_IDENTIFIER  ON
GO
SET  ANSI_NULLS  ON
GO
/* ***** Object:  Stored Procedure dbo.CPP_GetTheLastSchoolsWithPage   Script Date: 2006-5-11 10:40:08 ***** */


/*  ##SUMMARY 查询一个学校的话题或者活动等  */

--  ##REMARKS Authors :wht    Date:2006-6-5
--
 ##PARAM @PageSize     页大小          整型INT
--
 ##PARAM @PageIndex    页索引       整型INT
--
 ##PARAM @RowCount     总记录数          整型INT



-- CPP_GetSchoolThemeWithPageNew 10,0,100


create   procedure  CPP_Getthesis_thesisWithPageNew
(
   
@PageSize         INT ,
   
@PageIndex        INT ,
   
@RowCount         INT
   
-- --@whereClauses varchar(1000)
)

AS

DECLARE   @SQL   VARCHAR ( 5000 )
declare   @PageCount   int
declare   @currentPageSize    int





-- 计算总页数
SET   @PageCount = CASE   WHEN   @RowCount % @PageSize = 0   THEN   @RowCount / @PageSize   ELSE   @RowCount / @PageSize + 1   END

SET   @PageIndex = @PageIndex + 1

-- 第一页
IF   @PageIndex <= 1
BEGIN                
       
set   @SQL = ' select SchoolName,t.* from (SELECT top  ' + cast ( @PageSize   as   varchar ( 10 )) + '  ID, Title, Context, CreateTime, BlogID, AuthorBlogName, Author, Type, IsTop, ReplyCount, ReplyTime, ReplyContext, ReplyBlogID, ReplyBlogName, ReplyNickName, SchoolID, SchoolRegionname
         FROM  School_Themes
       
         order by id desc)t inner join school v on t.SchoolID = v.SchoolID order by id desc
'

END
ELSE
BEGIN
    
-- 最后一页
     IF   @PageIndex >= @PageCount   OR   @PageIndex <= 0
        
BEGIN
            
set   @currentPageSize =   @RowCount - ( @PageCount - 1 ) * @PageSize
                        
if ( @currentPageSize <= 0 )
            
begin
                            
set   @currentPageSize = @PageSize
                        
end

            
SET   @SQL = ' select SchoolName,t.*
                  from (SELECT top 
' + cast ( @PageSize   as   varchar ( 10 )) + ' ID, Title, Context, CreateTime, BlogID, AuthorBlogName, Author, Type, IsTop, ReplyCount, ReplyTime, ReplyContext, ReplyBlogID, ReplyBlogName, ReplyNickName, SchoolID, SchoolRegionname
                     FROM  School_Themes
                     order by id desc)t inner join school v on t.SchoolID = v.SchoolID order by id desc
'

        
END
    
ELSE
        
BEGIN
            
-- 中间页(上)
             IF   @PageIndex > 1   AND   @PageIndex <= @PageCount / 2 + 1
                
BEGIN
                    
SET   @SQL = '                    
                        SELECT TOP 
' + CONVERT ( VARCHAR ( 15 ), @PageSize ) + '  SchoolName, t.*
                        FROM (
                            SELECT TOP 
' + CONVERT ( VARCHAR ( 15 ), @PageSize ) + '  ID, Title, Context, CreateTime, BlogID, AuthorBlogName, Author, Type, IsTop, ReplyCount, ReplyTime, ReplyContext, ReplyBlogID, ReplyBlogName, ReplyNickName, SchoolID, SchoolRegionname
                            FROM (
                                SELECT TOP 
' + CONVERT ( VARCHAR ( 15 ), @pageSize * @pageIndex ) + '   ID, Title, Context, CreateTime, BlogID, AuthorBlogName, Author, Type, IsTop, ReplyCount, ReplyTime, ReplyContext, ReplyBlogID, ReplyBlogName, ReplyNickName, SchoolID, SchoolRegionname
                                        FROM  School_Themes
                                
                                 order by id desc              
                                  )AS A                                
                            order by id asc   
                              )AS t  inner join school v on t.SchoolID = v.SchoolID              
                        order by id desc
'
                
END
            
ELSE
            
-- 中间页(下)
                 BEGIN
                    
SET   @SQL = ' SELECT TOP  ' + CONVERT ( VARCHAR ( 15 ), @PageSize ) + '  shoolName, t.*
                          FROM (
                            SELECT TOP 
' + CONVERT ( VARCHAR ( 15 ), @rowCount   -   @pageSize   *   @pageIndex + @pageSize ) + '  ID, Title, Context, CreateTime, BlogID, AuthorBlogName, Author, Type, IsTop, ReplyCount, ReplyTime, ReplyContext, ReplyBlogID, ReplyBlogName, ReplyNickName, SchoolID, SchoolRegionname
                                    FROM  School_Themes
                            
                             order by id asc   
                               )AS t    inner join school v on t.SchoolID = v.SchoolID                                           
                              order id desc    
'

                
END
        
END
END
print   @SQL
EXEC  ( @SQL )

GO
SET  QUOTED_IDENTIFIER  OFF
GO
SET  ANSI_NULLS  ON
GO


3、根据存储过程名取存储过程内容

--      根据存储过程名取存储过程内容
--
  调试 GetContentByProcedureName '[dbo].[CPP_CountOfTrdeByUserID]'
alter   procedure  GetContentByProcedureName
(
@ProcedureName   nvarchar ( 500 ))
as  

if   exists  ( select   *   from  dbo.syscomments  where  id = object_id (N '' + @ProcedureName + '' )) 
select  c. text , c.encrypted, c. number , xtype = convert ( nchar ( 2 ), o.xtype),    
 
datalength (c. text ),  convert ( varbinary ( 8000 ), c. text ),  0   from  dbo.syscomments c, dbo.sysobjects o   
  
where  o.id  =  c.id  and  c.id  =   object_id (N '' + @ProcedureName + ''
order   by  c. number , c.colid  option (robust  plan )



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值