两个很常用的存储过程
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
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
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
@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
)
根据存储过程名取存储过程内容
--
调试 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
)