原文:
SQL点滴28—一个简单的存储过程
在表中写入一条数据同事要向另外一个表中写入信息,所以会使用到事务。实际使用的时候还会一次向一个表中吸入多条数据,下面的存储过程,将字符串拆分成数组然后写入到表中。
/*
***** Object: StoredProcedure [dbo].[sp_InsertEmployee] Script Date: 09/17/2012 23:28:42 *****
*/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
--
=============================================
--
Author: <Author,,Name>
--
Create date: <Create Date,,>
--
Description: 插入一条雇员数据
--
=============================================
CREATE
PROCEDURE
[
dbo
]
.
[
sp_InsertEmployee
]
--
Add the parameters for the stored procedure here
@Name
varchar
(
50
),
@UserName
varchar
(
50
),
@Password
varchar
(
50
),
@Hierarchy
char
(
1
),
@EmployeeTypeID
int
,
@Sex
varchar
(
5
),
@Telphone
varchar
(
20
),
@CellPhone
varchar
(
20
),
@QQ
varchar
(
20
),
@Email
varchar
(
50
),
@Statue
varchar
(
20
),
@Remark
varchar
(
50
),
@ManagerID
int
,
@Regions
varchar
(
1000
)
AS
BEGIN
--
SET NOCOUNT ON added to prevent extra result sets from
--
interfering with SELECT statements.
SET
NOCOUNT
ON
;
declare
@ID
int
declare
@tempSql
varchar
(
2000
)
--
Insert statements for procedure here
if
exists
(
select
*
from
Employee
where
Name
=
@Name
)
return
0
begin
transaction
insert
into
[
Employee
]
(
[
Name
]
,
[
UserName
]
,
[
Password
]
,
[
Hierarchy
]
,
[
EmployeeTypeID
]
,
[
Sex
]
,
[
Telphone
]
,
[
CellPhone
]
,
[
QQ
]
,
[
Email
]
,
[
Statue
]
,
[
Remark
]
,
[
ManagerID
]
)
values
(
@Name
,
@UserName
,
@Password
,
@Hierarchy
,
@EmployeeTypeID
,
@Sex
,
@Telphone
,
@CellPhone
,
@QQ
,
@Email
,
@Statue
,
@Remark
,
@ManagerID
)
set
@ID
=
@@IDENTITY
if
exists
(
select
*
from
Permission
where
ID
=
@ID
)
begin
delete
from
Permission
where
EmployeeID
=
@ID
end
else
begin
set
@tempSql
=
'
insert into Permission select
'
+
str
(
@ID
)
+
'
,
'''
+
replace
(
@Regions
,
'
,
'
,
'''
union select
'
+
str
(
@ID
)
+
'
,
'''
)
+
''''
exec
(
@tempSql
)
end
if
@@ERROR
>
0
begin
rollback
transaction
end
else
begin
commit
transaction
end
END
GO

