0
我试图通过一些代码来生成工资单的工资单,但我有不受影响的行不会提示任何信息,因为我测试脚本。 我的参数允许使用'startdate','endnote','taxID'和两个tvp表格,这些表格会花费他们的时间和折扣优惠。payroll tvp存储过程没有行受到影响
我怎样才能让它通过信息?
IF EXISTS(SELECT * FROM sys.Databases WHERE name='usp_createPayroll')
BEGIN
DROP PROCEDURE dbo.usp_createPayroll
DROP TYPE dbo.EmployeeInfo
DROP TYPE dbo.AllowanceInfo
END
CREATE TYPE EmployeeInfo AS TABLE
(
employeeID INT
,TotalHours INT
,PRIMARY KEY (
employeeID
,TotalHours
)
);
GO
CREATE TYPE AllowanceInfo AS TABLE
(
employeeID INT, allowanceID INT, Amount DECIMAL(7, 2),PRIMARY KEY (
employeeID, allowanceID, Amount
)
);
GO
CREATE PROCEDURE usp_createPayroll @StartDatePeriod DATE ,@EndDatePeriod DATE, @taxID INT, @numberofTotalHours EmployeeInfo READONLY, @Allowance AllowanceInfo READONLY
AS
BEGIN
INSERT INTO Payslip
SELECT h.employeeID,
@taxID, @StartDatePeriod,
@EndDatePeriod,
h.TotalHours,
p.hourlyRate * h.TotalHours,
(p.hourlyRate * h.TotalHours) + a.Amount,
((p.hourlyRate * h.TotalHours) + a.Amount) * t.taxRate,
((p.hourlyRate * h.TotalHours) + a.Amount) - (((p.hourlyRate * h.TotalHours) + a.Amount) * t.taxRate)
FROM @numberofTotalHours h, @Allowance a, Position p, PayAllowance pa, HumanResources e, Taxes t, EmployeePositions ep
WHERE (e.employeeID = ep.employeeID AND ep.PositionID = p.PositionID) AND e.employeeID = h.employeeID AND t.taxID = @taxID
END
DECLARE @employeeInfo EmployeeInfo;
DECLARE @TotalHours INT;
INSERT @employeeInfo
SELECT e.employeeID, @TotalHours
FROM HumanResources e
WHERE e.employeeID = 2 AND @TotalHours = 30
DECLARE @allowanceInfo AllowanceInfo;
DECLARE @employeeAllowanceInfo EmployeeInfo;
INSERT @allowanceInfo
SELECT e.employeeID, pa.allowanceID, pa.Amount
FROM HumanResources e, Allowance a, PayAllowance pa, EmployeeAllowance ea, @employeeAllowanceInfo emp
WHERE e.employeeID = emp.employeeID AND pa.AllowanceID = a.AllowanceID AND a.AllowanceID = ea.AllowanceID AND pa.allowanceID = 1
EXECUTE usp_createPayroll
@startDatePeriod = '01-01-2015 23:59:59'
,@endDatePeriod = '01-31-2015 23:59:59'
,@taxID = 2
,@numberofTotalHours = @employeeInfo
,@Allowance = @allowanceInfo
GO
SELECT *
FROM PaySlip
[不良习惯踢:使用旧式连接 - 伯特兰·亚伦(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-使用老的风格,joins.aspx) – SqlZim