0
私はpayslipの給与計算を生成するためにいくつかのコードを渡そうとしていますが、スクリプトをテストするときに影響を受けないローがあります。 私のパラメータは、 'startdate'、 'endnote'、 'taxID'、および時間と割引の引当金を取る2つの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
[キックする悪い習慣:古いスタイルのJOINを使用して - アーロン・ベルトラン](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick- using-old-style-joins.aspx) – SqlZim