【发布时间】:2015-09-15 23:25:18
【问题描述】:
我正在尝试创建一个存储过程,以允许我将我的员工分为 3 个不同的类别,然后可以将它们配对到数据库中的相关帐户。我是编写存储过程的新手,所以我不知道这在语法上是否正确。基本上,在运行时,我希望存储过程检查员工是否全职以及他们的工作角色,然后将它们分配给以下帐户 - HighIncomeC00CCW、LowIncomeC0ECCW 和 PartTimeC0ECCX。这就是我目前所拥有的 -
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[spStaffPay]
@Isfulltime = bit
@Jobrole = varchar(20)
BEGIN
IF (@Isfulltime = 1
AND @Jobrole = 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8 or 9 or 10)
BEGIN
Account = HighIncomeC00CCW
END
ELSE IF (@Isfulltime = 1
AND @Jobrole = 11 or 12 or 13 or 14 or 15 or 16 or 17 or 18 or 19 or 20)
BEGIN
Account = LowIncomeC0ECCW
END
ELSE (@Isfulltime = 0)
Then
BEGIN
Account = PartTimeC0ECCX
END
END
【问题讨论】:
-
如果员工在表中,那么您可以从表中选择并使用
case语句 - 这将比编写程序代码更快。 -
哦,顺便说一句,当您运行该 SP 时,您会收到错误吗?如果是这样,那是什么?如果你想知道它是否正确......运行它!
-
假设 EmployeeType (Full/Part time) 和 JobRole 是 Staff 表中的一列是否正确?您要查询的表的架构是什么?
-
@NoSaidTheCompiler,是的,EmployeeType(全职/兼职)和 JobRole 是 Staff 表中的一列。架构是什么意思?
-
@Nick.McDermaid 抱歉,我是 SP 的新手,案例陈述看起来如何?
标签: asp.net sql-server stored-procedures account