现在的位置: 首页 > 综合 > 正文

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

2013年10月06日 ⁄ 综合 ⁄ 共 6638字 ⁄ 字号 评论关闭

两个很常用的存储过程 

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
)

抱歉!评论已关闭.