看了
http://www.cnblogs.com/Heroman/archive/2005/01/20/94806.html后我感觉有必要介绍一下CodeSmith,通常追求挑战的程序员认为设计、开发都是充满乐趣,但重复的开发相同的底层工作却是无味的,我接触过也试用过很多代码生成软件,但不是生成出的代码太复杂,就是有些方面不合自己的胃口,尤其是针对Web开发体会更是如此,通常的代码生成器生成的代码直接支持net.remoting,并且均是对dataset直接操作的,而在通常的小规模的web开发中net.reromting不一定用,而直接对dataset操作要求在session来保存临时编辑的数据,而通常对于web开发来说只要一条一条的对数据库编辑,还有,web开发通常都要有分页设计功能,而自动生成的代码也不是尽如人意。所以我一直寻求一种全方位的自定义的生成工具,哪怕初期开发复杂些,但只要开发一次,以后就可以生成合自己胃口的代码。后来一不小心发现了
codesmith终于发现他正是我想要的模板生成工具,以下就以下面这个最典型的数据库结构向大家展示一下我作的模板生成的代码,来说明codesmith能达到的功能。 另外可以在“生成工具-CodeSmith-享受编程的乐趣(三)”中可以下载我写的模板
这个数据库中是面对标准的文章发布功能的主要包括两个表一个是articleClass 另一个是article,在aritclass中是一个标准的树状结构(parentid 和id有一个自联接)而articlass中有一个对于ArticleClassID的外键引用。图中除了parentID字段以外均不能为空,这样开发起来方便些:)
对于数据库的操作通常都是用多层来实现的,本篇四层为例,但目前我只作了下三层的模板,因为界面层变化因素太多通常针对不同的项目有不同的要求,大家可以通常这里介绍的方式根据具体项目来自己实现界面层。
第一层数据库层,最通常的工作就是作一些存贮过程供下一层调用
生成的代码如下:
由于我通常作的开发都是基于Web的所以同时整合了分页操作,另外针对树状结构专门提供了一些贮存过程和函数。
--
----------------------------------------------------------------------------------------------------------------------
--
the sprocs returns various error/success codes
--
a return value of 0 means success
--
a return value of 1 means a dup A_ArticleClass
--
a return value of 2 means A_ArticleClass doesn't exist
--
----------------------------------------------------------------------------------------------------------------------
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_InsertDeleteUpdate Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_InsertDeleteUpdate]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_InsertDeleteUpdate
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_InsertDeleteUpdate
]
(
@ID
uniqueidentifier
=
null
,
@ParentID
uniqueidentifier
=
null
,
@Name
nvarchar
(
128
)
=
null
,
@Description
ntext
=
null
,
@OrderBy
int
=
null
,
@ImgUrl
nvarchar
(
128
)
=
null
,
@IconUrl
nvarchar
(
128
)
=
null
,
@Action
int
)
AS
BEGIN
IF
@Action
=
0
--
Insert
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ID)
)
RETURN
1
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ParentID
=
@ParentID)
And
(Name
=
@Name)
)
RETURN
1
INSERT
INTO
[
dbo
]
.
[
A_ArticleClass
]
(ID, ParentID, Name, Description, OrderBy, ImgUrl, IconUrl)
VALUES
(@ID, @ParentID, @Name, @Description, @OrderBy, @ImgUrl, @IconUrl)
SELECT
*
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ID)
RETURN
END
IF
@Action
=
1
--
Delete
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ID)
)
BEGIN
Delete
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ID)
RETURN
END
ELSE
BEGIN
RETURN
2
END
END
IF
@Action
=
2
--
Update
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ID)
)
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ParentID
=
@ParentID)
And
(Name
=
@Name)
AND
(
NOT
((ID
=
@ID))
))
RETURN
1
UPDATE
[
dbo
]
.
[
A_ArticleClass
]
SET
ParentID
=
@ParentID, Name
=
@Name, Description
=
@Description, OrderBy
=
@OrderBy, ImgUrl
=
@ImgUrl, IconUrl
=
@IconUrl
WHERE
(ID
=
@ID)
RETURN
END
ELSE
BEGIN
RETURN
2
END
END
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetPageData Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_GetPageData]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_GetPageData
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_GetPageData
]
(
@FieldsName
nvarchar
(
512
)
=
'
A.*
'
,
@Where
nvarchar
(
512
)
=
NULL
,
@OrderBy
nvarchar
(
128
)
=
NULL
,
@RecordCount
int
=
0
output ,
@PageIndex
int
=
0
output,
@PageSize
int
=
10
)
AS
BEGIN
IF
@Where
IS
NULL
BEGIN
Set
@Where
=
''
END
IF
(@FieldsName
IS
NULL
)
or
(@FieldsName
=
''
)
BEGIN
Set
@FieldsName
=
'
A.*
'
END
IF
@OrderBy
IS
NULL
BEGIN
Set
@OrderBy
=
''
END
![None.gif](/Images/OutliningIndicators/None.gif)
Set
@FieldsName
=
LTRIM
(
RTRIM
(@FieldsName))
Set
@Where
=
LTRIM
(
RTRIM
(@Where))
Set
@OrderBy
=
LTRIM
(
RTRIM
(@OrderBy))
![None.gif](/Images/OutliningIndicators/None.gif)
CREATE
TABLE
#Pager
(
ID
uniqueidentifier
,
IndexID
int
IDENTITY
(
1
,
1
)
NOT
NULL
)
![None.gif](/Images/OutliningIndicators/None.gif)
Declare
@SelectSql
nvarchar
(
4000
)
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@SelectSql
=
'
INSERT INTO #Pager (ID)
'
+
'
SELECT ID
'
+
'
FROM [dbo].[A_ArticleClass]
'
IF
@Where
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Where
'
+
@Where
END
IF
@OrderBy
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Order By
'
+
@OrderBy
END
![None.gif](/Images/OutliningIndicators/None.gif)
EXEC
(@SelectSql)
![None.gif](/Images/OutliningIndicators/None.gif)
SELECT
@RecordCount
=
COUNT
(
*
)
FROM
#Pager
![None.gif](/Images/OutliningIndicators/None.gif)
IF
(@RecordCount
<
(@PageSize
*
@PageIndex))
BEGIN
SET
@PageIndex
=
@RecordCount
/
@PageSize
END
IF
(@RecordCount
=
(@PageSize
*
@PageIndex))
BEGIN
SET
@PageIndex
=
@PageIndex
-
1
IF
@PageIndex
<
0
BEGIN
SET
@PageIndex
=
0
END
END
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@PageUpperBound
int
DECLARE
@PageLowerBound
int
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@PageLowerBound
=
@PageSize
*
@PageIndex
SET
@PageUpperBound
=
@PageLowerBound
+
@PageSize
+
1
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@SelectSql
=
'
SELECT
'
+
@FieldsName
+
'
FROM [dbo].[A_ArticleClass] AS A INNER JOIN #Pager AS B
'
+
'
ON A.ID = B.ID
'
+
'
WHERE
'
+
'
B.IndexID >
'
+
RTRIM
(
LTRIM
(
CAST
(@PageLowerBound
AS
varchar
(
128
))))
+
'
AND B.IndexID <
'
+
RTRIM
(
LTRIM
(
CAST
(@PageUpperBound
AS
varchar
(
128
))))
+
'
ORDER BY B.IndexID
'
EXEC
(@SelectSql)
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetAll Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_GetAll]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_GetAll
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_GetAll
]
(
@FieldsName
nvarchar
(
512
)
=
'
*
'
,
@Where
nvarchar
(
512
)
=
NULL
,
@OrderBy
nvarchar
(
128
)
=
NULL
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
@Where
IS
NULL
BEGIN
Set
@Where
=
''
END
IF
(@FieldsName
IS
NULL
)
or
(@FieldsName
=
''
)
BEGIN
Set
@FieldsName
=
'
*
'
END
IF
@OrderBy
IS
NULL
BEGIN
Set
@OrderBy
=
''
END
![None.gif](/Images/OutliningIndicators/None.gif)
Set
@FieldsName
=
LTRIM
(
RTRIM
(@FieldsName))
Set
@Where
=
LTRIM
(
RTRIM
(@Where))
Set
@OrderBy
=
LTRIM
(
RTRIM
(@OrderBy))
Declare
@SelectSql
nvarchar
(
4000
)
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@SelectSql
=
'
SELECT
'
+
@FieldsName
+
'
FROM [dbo].[A_ArticleClass]
'
IF
@Where
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Where
'
+
@Where
END
IF
@OrderBy
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Order By
'
+
@OrderBy
END
![None.gif](/Images/OutliningIndicators/None.gif)
EXEC
(@SelectSql)
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetLevel Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
type
=
'
FN
'
AND
name
=
'
A_ArticleClass_GetLevel
'
)
drop
function
[
dbo
]
.
[
A_ArticleClass_GetLevel
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
FUNCTION
[
dbo
]
.
[
A_ArticleClass_GetLevel
]
(
@ID
uniqueidentifier
)
RETURNS
int
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@ParentID
uniqueidentifier
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@ReturnValue
int
SELECT
@ReturnValue
=
-
1
![None.gif](/Images/OutliningIndicators/None.gif)
SELECT
@ParentID
=
@ID
![None.gif](/Images/OutliningIndicators/None.gif)
WHILE
(
not
(@ParentID
is
null
))
BEGIN
SELECT
@ReturnValue
=
@ReturnValue
+
1
SELECT
@ParentID
=
ParentID
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
END
RETURN
@ReturnValue
![None.gif](/Images/OutliningIndicators/None.gif)
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetMaxLevel Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
type
=
'
FN
'
AND
name
=
'
A_ArticleClass_GetMaxLevel
'
)
drop
function
[
dbo
]
.
[
A_ArticleClass_GetMaxLevel
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
FUNCTION
[
dbo
]
.
[
A_ArticleClass_GetMaxLevel
]
(
)
RETURNS
int
AS
BEGIN
DECLARE
@ReturnValue
int
SELECT
@ReturnValue
=
Max
(
[
dbo
]
.A_ArticleClass_GetLevel(ID))
from
[
dbo
]
.A_ArticleClass
RETURN
@ReturnValue
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetFullName Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
type
=
'
FN
'
AND
name
=
'
A_ArticleClass_GetFullName
'
)
drop
function
[
dbo
]
.
[
A_ArticleClass_GetFullName
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
FUNCTION
[
dbo
]
.
[
A_ArticleClass_GetFullName
]
(
@ID
uniqueidentifier
)
RETURNS
nvarchar
(
4000
)
AS
BEGIN
DECLARE
@ParentID
uniqueidentifier
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@ReturnValue
nvarchar
(
4000
)
SELECT
@ReturnValue
=
''
![None.gif](/Images/OutliningIndicators/None.gif)
SELECT
@ParentID
=
@ID
WHILE
(
not
(@ParentID
is
null
))
BEGIN
SELECT
@ReturnValue
=
'
/
'
+
isnull
(
[
Name
]
,
'
No Name
'
)
+
@ReturnValue
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
SELECT
@ParentID
=
ParentID
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
END
RETURN
@ReturnValue
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetTopID Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
type
=
'
FN
'
AND
name
=
'
A_ArticleClass_GetTopID
'
)
drop
function
[
dbo
]
.
[
A_ArticleClass_GetTopID
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
FUNCTION
[
dbo
]
.
[
A_ArticleClass_GetTopID
]
(
@ID
uniqueidentifier
)
RETURNS
uniqueidentifier
AS
BEGIN
DECLARE
@ParentID
uniqueidentifier
DECLARE
@ResultID
uniqueidentifier
SELECT
@ParentID
=
@ID
WHILE
(
not
(@ParentID
is
null
))
BEGIN
SELECT
@ResultID
=
@ParentID
SELECT
@ParentID
=
ParentID
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
END
RETURN
@ResultID
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetFullID Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
type
=
'
FN
'
AND
name
=
'
A_ArticleClass_GetFullID
'
)
drop
function
[
dbo
]
.
[
A_ArticleClass_GetFullID
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
FUNCTION
[
dbo
]
.
[
A_ArticleClass_GetFullID
]
(
@ID
uniqueidentifier
)
RETURNS
nvarchar
(
4000
)
AS
BEGIN
DECLARE
@ParentID
uniqueidentifier
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@ReturnValue
nvarchar
(
4000
)
SELECT
@ReturnValue
=
''
![None.gif](/Images/OutliningIndicators/None.gif)
SELECT
@ParentID
=
@ID
WHILE
(
not
(@ParentID
is
null
))
BEGIN
SELECT
@ReturnValue
=
'
/
'
+
Cast
(
[
ID
]
as
varchar
(
128
))
+
@ReturnValue
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
SELECT
@ParentID
=
ParentID
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
END
RETURN
@ReturnValue
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetChildren Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_GetChildren]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_GetChildren
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_GetChildren
]
(
@ID
uniqueidentifier
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@ID))
BEGIN
RETURN
2
END
![None.gif](/Images/OutliningIndicators/None.gif)
CREATE
TABLE
#TmpPaths
(
ID
uniqueidentifier
,
[
Level
]
int
)
insert
into
#TmpPaths(ID,
[
Level
]
)
select
ID,
[
dbo
]
.A_ArticleClass_GetLevel(ID)
from
[
dbo
]
.
[
A_ArticleClass
]
where
(ID
=
@ID)
![None.gif](/Images/OutliningIndicators/None.gif)
while
(
exists
(
select
*
from
[
dbo
]
.
[
A_ArticleClass
]
where
ParentID
in
(
select
ID
from
#TmpPaths)
and
ID
not
in
(
select
ID
from
#TmpPaths)
)
)
begin
insert
into
#TmpPaths(ID,
[
Level
]
)
select
ID,
[
dbo
]
.A_ArticleClass_GetLevel(ID)
from
[
dbo
]
.
[
A_ArticleClass
]
where
ParentID
in
(
select
ID
from
#TmpPaths)
and
ID
not
in
(
select
ID
from
#TmpPaths)
end
![None.gif](/Images/OutliningIndicators/None.gif)
delete
#TmpPaths
where
ID
=
@ID
![None.gif](/Images/OutliningIndicators/None.gif)
select
A.
*
, B.
Level
from
[
dbo
]
.
[
A_ArticleClass
]
A
inner
join
#TmpPaths B
on
A.ID
=
B.ID
order
by
B.
Level
desc
RETURN
![None.gif](/Images/OutliningIndicators/None.gif)
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetNonChildren Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_GetNonChildren]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_GetNonChildren
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_GetNonChildren
]
(
@ID
uniqueidentifier
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@ID))
BEGIN
RETURN
2
END
![None.gif](/Images/OutliningIndicators/None.gif)
CREATE
TABLE
#TmpPaths
(
ID
uniqueidentifier
)
insert
into
#TmpPaths(ID)
select
ID
from
[
dbo
]
.
[
A_ArticleClass
]
where
(ID
=
@ID)
![None.gif](/Images/OutliningIndicators/None.gif)
while
(
exists
(
select
*
from
[
dbo
]
.
[
A_ArticleClass
]
where
ParentID
in
(
select
ID
from
#TmpPaths)
and
ID
not
in
(
select
ID
from
#TmpPaths)
)
)
begin
insert
into
#TmpPaths(ID)
select
ID
from
[
dbo
]
.
[
A_ArticleClass
]
where
ParentID
in
(
select
ID
from
#TmpPaths)
and
ID
not
in
(
select
ID
from
#TmpPaths)
end
Select
*
from
[
dbo
]
.
[
A_ArticleClass
]
where
ID
not
in
(
select
ID
from
#TmpPaths)
RETURN
![None.gif](/Images/OutliningIndicators/None.gif)
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_GetParents Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_GetParents]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_GetParents
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_GetParents
]
(
@ID
uniqueidentifier
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@ID))
BEGIN
RETURN
2
END
![None.gif](/Images/OutliningIndicators/None.gif)
CREATE
TABLE
#TmpPaths
(
ID
uniqueidentifier
,
[
Level
]
int
)
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@ParentID
uniqueidentifier
SELECT
@ParentID
=
ParentID
from
[
dbo
]
.
[
A_ArticleClass
]
where
(ID
=
@ID)
![None.gif](/Images/OutliningIndicators/None.gif)
WHILE
(
not
(@ParentID
is
null
))
BEGIN
insert
into
#TmpPaths(ID,
[
Level
]
)
select
ID,
[
dbo
]
.A_ArticleClass_GetLevel(ID)
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
![None.gif](/Images/OutliningIndicators/None.gif)
SELECT
@ParentID
=
ParentID
FROM
[
dbo
]
.
[
A_ArticleClass
]
WHERE
(ID
=
@ParentID)
END
![None.gif](/Images/OutliningIndicators/None.gif)
select
A.
*
, B.
Level
from
[
dbo
]
.
[
A_ArticleClass
]
A
inner
join
#TmpPaths B
on
A.ID
=
B.ID
order
by
B.
Level
desc
![None.gif](/Images/OutliningIndicators/None.gif)
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_MoveTo Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_MoveTo]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_MoveTo
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_MoveTo
]
(
@ID
uniqueidentifier
,
@NewParentID
uniqueidentifier
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@ID))
BEGIN
RETURN
2
END
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@NewParentID))
BEGIN
RETURN
2
END
![None.gif](/Images/OutliningIndicators/None.gif)
Update
[
dbo
]
.A_ArticleClass
Set
ParentID
=
@NewParentID
where
(ID
=
@ID)
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_ArticleClass_CopyChildren Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_ArticleClass_CopyChildren]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_ArticleClass_CopyChildren
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_ArticleClass_CopyChildren
]
(
@ID
uniqueidentifier
,
@FromID
uniqueidentifier
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@ID))
BEGIN
RETURN
2
END
IF
NOT
exists
(
SELECT
*
FROM
[
dbo
]
.A_ArticleClass
WHERE
(ID
=
@FromID))
BEGIN
RETURN
2
END
![None.gif](/Images/OutliningIndicators/None.gif)
CREATE
TABLE
#TmpPaths
(
ID
uniqueidentifier
,
ParentID
uniqueidentifier
null
,
NID
uniqueidentifier
,
NParentID
uniqueidentifier
null
)
insert
into
#TmpPaths(ID,ParentID,NID, NParentID)
select
ID,ParentID, @ID,
null
from
[
dbo
]
.
[
A_ArticleClass
]
where
(ID
=
@FromID)
![None.gif](/Images/OutliningIndicators/None.gif)
while
(
exists
(
select
*
from
[
dbo
]
.
[
A_ArticleClass
]
where
ParentID
in
(
select
ID
from
#TmpPaths)
and
ID
not
in
(
select
ID
from
#TmpPaths)
)
)
begin
insert
into
#TmpPaths(ID,ParentID,NID, NParentID)
select
ID,ParentID,
NewID
(),
null
from
[
dbo
]
.
[
A_ArticleClass
]
where
ParentID
in
(
select
ID
from
#TmpPaths)
and
ID
not
in
(
select
ID
from
#TmpPaths)
end
![None.gif](/Images/OutliningIndicators/None.gif)
update
#TmpPaths
set
#TmpPaths.NParentID
=
b.NID
from
#TmpPaths, #tmpPaths b
where
#TmpPaths.ParentID
=
b.ID
![None.gif](/Images/OutliningIndicators/None.gif)
delete
#TmpPaths
where
ID
=
@FromID
![None.gif](/Images/OutliningIndicators/None.gif)
insert
into
[
dbo
]
.
[
A_ArticleClass
]
(Name,Description,OrderBy,ImgUrl,IconUrl,ParentID,ID)
select
B.Name,B.Description,B.OrderBy,B.ImgUrl,B.IconUrl,a.NParentID, a.NID
from
#TmpPaths a
inner
join
[
dbo
]
.
[
A_ArticleClass
]
b
on
a.ID
=
b.ID
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
--
----------------------------------------------------------------------------------------------------------------------
--
the sprocs returns various error/success codes
--
a return value of 0 means success
--
a return value of 1 means a dup A_Article
--
a return value of 2 means A_Article doesn't exist
--
----------------------------------------------------------------------------------------------------------------------
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_Article_InsertDeleteUpdate Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_Article_InsertDeleteUpdate]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_Article_InsertDeleteUpdate
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
![None.gif](/Images/OutliningIndicators/None.gif)
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_Article_InsertDeleteUpdate
]
(
@ID
uniqueidentifier
=
null
,
@ArticleClassID
uniqueidentifier
=
null
,
@Title
nvarchar
(
256
)
=
null
,
@Content
ntext
=
null
,
@IsNew
bit
=
null
,
@IsTop
bit
=
null
,
@OrderBy
int
=
null
,
@ImgUrl
nvarchar
(
128
)
=
null
,
@CreateTime
datetime
=
null
,
@UserName
nvarchar
(
64
)
=
null
,
@Author
nvarchar
(
16
)
=
null
,
@Keywords
nvarchar
(
256
)
=
null
,
@Action
int
)
AS
BEGIN
IF
@Action
=
0
--
Insert
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ID
=
@ID)
)
RETURN
1
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ArticleClassID
=
@ArticleClassID)
And
(Title
=
@Title)
)
RETURN
1
INSERT
INTO
[
dbo
]
.
[
A_Article
]
(ID, ArticleClassID, Title, Content, IsNew, IsTop, OrderBy, ImgUrl, CreateTime, UserName, Author, Keywords)
VALUES
(@ID, @ArticleClassID, @Title, @Content, @IsNew, @IsTop, @OrderBy, @ImgUrl, @CreateTime, @UserName, @Author, @Keywords)
SELECT
*
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ID
=
@ID)
RETURN
END
IF
@Action
=
1
--
Delete
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ID
=
@ID)
)
BEGIN
Delete
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ID
=
@ID)
RETURN
END
ELSE
BEGIN
RETURN
2
END
END
IF
@Action
=
2
--
Update
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ID
=
@ID)
)
BEGIN
IF
EXISTS
(
SELECT
*
FROM
[
dbo
]
.
[
A_Article
]
WHERE
(ArticleClassID
=
@ArticleClassID)
And
(Title
=
@Title)
AND
(
NOT
((ID
=
@ID))
))
RETURN
1
UPDATE
[
dbo
]
.
[
A_Article
]
SET
ArticleClassID
=
@ArticleClassID, Title
=
@Title, Content
=
@Content, IsNew
=
@IsNew, IsTop
=
@IsTop, OrderBy
=
@OrderBy, ImgUrl
=
@ImgUrl, CreateTime
=
@CreateTime, UserName
=
@UserName, Author
=
@Author, Keywords
=
@Keywords
WHERE
(ID
=
@ID)
RETURN
END
ELSE
BEGIN
RETURN
2
END
END
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_Article_GetPageData Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_Article_GetPageData]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_Article_GetPageData
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_Article_GetPageData
]
(
@FieldsName
nvarchar
(
512
)
=
'
A.*
'
,
@Where
nvarchar
(
512
)
=
NULL
,
@OrderBy
nvarchar
(
128
)
=
NULL
,
@RecordCount
int
=
0
output ,
@PageIndex
int
=
0
output,
@PageSize
int
=
10
)
AS
BEGIN
IF
@Where
IS
NULL
BEGIN
Set
@Where
=
''
END
IF
(@FieldsName
IS
NULL
)
or
(@FieldsName
=
''
)
BEGIN
Set
@FieldsName
=
'
A.*
'
END
IF
@OrderBy
IS
NULL
BEGIN
Set
@OrderBy
=
''
END
![None.gif](/Images/OutliningIndicators/None.gif)
Set
@FieldsName
=
LTRIM
(
RTRIM
(@FieldsName))
Set
@Where
=
LTRIM
(
RTRIM
(@Where))
Set
@OrderBy
=
LTRIM
(
RTRIM
(@OrderBy))
![None.gif](/Images/OutliningIndicators/None.gif)
CREATE
TABLE
#Pager
(
ID
uniqueidentifier
,
IndexID
int
IDENTITY
(
1
,
1
)
NOT
NULL
)
![None.gif](/Images/OutliningIndicators/None.gif)
Declare
@SelectSql
nvarchar
(
4000
)
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@SelectSql
=
'
INSERT INTO #Pager (ID)
'
+
'
SELECT ID
'
+
'
FROM [dbo].[A_Article]
'
IF
@Where
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Where
'
+
@Where
END
IF
@OrderBy
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Order By
'
+
@OrderBy
END
![None.gif](/Images/OutliningIndicators/None.gif)
EXEC
(@SelectSql)
![None.gif](/Images/OutliningIndicators/None.gif)
SELECT
@RecordCount
=
COUNT
(
*
)
FROM
#Pager
![None.gif](/Images/OutliningIndicators/None.gif)
IF
(@RecordCount
<
(@PageSize
*
@PageIndex))
BEGIN
SET
@PageIndex
=
@RecordCount
/
@PageSize
END
IF
(@RecordCount
=
(@PageSize
*
@PageIndex))
BEGIN
SET
@PageIndex
=
@PageIndex
-
1
IF
@PageIndex
<
0
BEGIN
SET
@PageIndex
=
0
END
END
![None.gif](/Images/OutliningIndicators/None.gif)
DECLARE
@PageUpperBound
int
DECLARE
@PageLowerBound
int
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@PageLowerBound
=
@PageSize
*
@PageIndex
SET
@PageUpperBound
=
@PageLowerBound
+
@PageSize
+
1
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@SelectSql
=
'
SELECT
'
+
@FieldsName
+
'
FROM [dbo].[A_Article] AS A INNER JOIN #Pager AS B
'
+
'
ON A.ID = B.ID
'
+
'
WHERE
'
+
'
B.IndexID >
'
+
RTRIM
(
LTRIM
(
CAST
(@PageLowerBound
AS
varchar
(
128
))))
+
'
AND B.IndexID <
'
+
RTRIM
(
LTRIM
(
CAST
(@PageUpperBound
AS
varchar
(
128
))))
+
'
ORDER BY B.IndexID
'
EXEC
(@SelectSql)
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
/**/
/****** Object: Stored Procedure [dbo].A_Article_GetAll Script Date: 2005年1月22日 ******/
if
exists
(
select
*
from
dbo.sysobjects
where
id
=
object_id
(N
'
[dbo].[A_Article_GetAll]
'
)
and
OBJECTPROPERTY
(id, N
'
IsProcedure
'
)
=
1
)
drop
procedure
[
dbo
]
.
[
A_Article_GetAll
]
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
ON
GO
SET
ANSI_NULLS
OFF
GO
--
----------------------------------------------------------------------------------------------------------------------
--
Date Created: 2005年1月22日
--
Created By: Generated by Keyss
--
----------------------------------------------------------------------------------------------------------------------
CREATE
PROCEDURE
[
dbo
]
.
[
A_Article_GetAll
]
(
@FieldsName
nvarchar
(
512
)
=
'
*
'
,
@Where
nvarchar
(
512
)
=
NULL
,
@OrderBy
nvarchar
(
128
)
=
NULL
)
AS
BEGIN
![None.gif](/Images/OutliningIndicators/None.gif)
IF
@Where
IS
NULL
BEGIN
Set
@Where
=
''
END
IF
(@FieldsName
IS
NULL
)
or
(@FieldsName
=
''
)
BEGIN
Set
@FieldsName
=
'
*
'
END
IF
@OrderBy
IS
NULL
BEGIN
Set
@OrderBy
=
''
END
![None.gif](/Images/OutliningIndicators/None.gif)
Set
@FieldsName
=
LTRIM
(
RTRIM
(@FieldsName))
Set
@Where
=
LTRIM
(
RTRIM
(@Where))
Set
@OrderBy
=
LTRIM
(
RTRIM
(@OrderBy))
Declare
@SelectSql
nvarchar
(
4000
)
![None.gif](/Images/OutliningIndicators/None.gif)
SET
@SelectSql
=
'
SELECT
'
+
@FieldsName
+
'
FROM [dbo].[A_Article]
'
IF
@Where
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Where
'
+
@Where
END
IF
@OrderBy
<>
''
BEGIN
SET
@SelectSql
=
@SelectSql
+
'
Order By
'
+
@OrderBy
END
![None.gif](/Images/OutliningIndicators/None.gif)
EXEC
(@SelectSql)
RETURN
END
GO
![None.gif](/Images/OutliningIndicators/None.gif)
SET
QUOTED_IDENTIFIER
OFF
GO
SET
ANSI_NULLS
ON
GO
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)