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