ТВП хранимая процедура начисления заработной платы должна объявить скалярную переменную
Привет,
В настоящее время у меня возникла проблема при выполнении с @employeeinfo в последнем операторе execute. Это проблема объявления или проблема строки? как я могу это исправить?
Я пытаюсь пройти через хранимую процедуру, которая генерирует платежную ведомость для сотрудника.
@employeeinfo должен проходить через TVP, но я получаю "должен объявить скалярную переменную @employeeinfo"
Заранее спасибо
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 DECLARE @stDate DATE, @EdDate DATE, @tx INT, @noHours INT, @allow INT SELECT p.employeeID, @taxID, @StartDatePeriod, @EndDatePeriod, p.TotalHours, pos.hourlyRate * p.TotalHours, (pos.hourlyRate * p.TotalHours) + h.AmountSold, ((pos.hourlyRate * p.TotalHours) + h.AmountSold) * t.taxRate, ((pos.hourlyRate * p.TotalHours) + h.AmountSold) - (((pos.hourlyRate * p.TotalHours) + h.AmountSold) * t.taxRate) FROM PaySlip p INNER JOIN HumanResources h ON h.EmployeeID = p.EmployeeID INNER JOIN Taxes t ON t.TaxID = p.TaxID INNER JOIN Position pos ON pos.HourlyRate = p.EmployeeID -- add position in somehow 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 DROP PROCEDURE usp_createPayroll
Что я уже пробовал:
Я пытался изменить оператор select и объявить переменные, когда изначально у меня был оператор insert