У меня есть следующая хранимая процедура:
CREATE DEFINER=`sleuser`@`%` PROCEDURE `PCDD`(
in ProjectID int,
in MonthName varchar(50),
in ServiceCode varchar(50),
in ProjectName varchar(50)
)
BEGIN
SET @PCProjID = ProjectID;
SET @PCSN1 = "020." + ServiceCode + ".000";
SET @Month = MonthName;
SET @ImpCostID = ProjectName;
SET @ImpCostTask1 = "020." + ServiceCode + ".000";
SELECT
project.project_id,
'FP' as Phase,
ImportCost.OriginalCommitments,
ImportCost.ApprovedCommitmentChanges,
sum(RegisteredChangeOrders) + sum(OriginalContractPrice) as CurrentAssigned,
sum(ProjectCostBudget.PendingChangeOrders) as PendingScopeChanges,
FROM `RCLY-DEV`.ProjectCostBudget
inner join project on project.project_id =
ProjectCostBudget.ProjectID
inner join ImportCost on ImportCost.ProjectID = project.pmis
where ImportCost.ProjectID = @ImpCostID and
ImportCost.Task = @PCSN1 and
ProjectCostBudget.ProjectID = @PCProjID and
ProjectCostBudget.ServiceNumber = @ImpCostTask1
который я звоню используя:
call PCDD(2,'September%2018','0000','RLCY-BB-01')
Где «0000» должно изменяться от «0000» до «6000». Когда я запускаю SP для «0000», он возвращает ожидаемые результаты, но когда я изменяю его на что-то еще, он просто возвращает все нули. Я попытался обновить @ PCSN1 и @ ImpCostTask1 до:
SET @PCSN1 = ("020.", ServiceCode, ".000");
SET @ImpCostTask1 = ("020.", ServiceCode, ".000");
Но я получаю ошибку
"Операнд должен содержать 1 столбец (столбцы).
Что я здесь не так делаю? Почему он работает для одного ServiceCode, а не для других?