Не могу найти идентификатор, но реально существует в Postgres - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь получить данные из базы данных для создания доски прогресса, для которой этот запрос продолжает возвращаться для вывода. «Данные», даже для значений projectId, которые фактически существуют в БД, project_id - это идентификатор, который вводится в функция.

  -- FUNCTION: "ProjectProgress"."GetStepStatusbyProject"("Common"."InputDBMessage")

-- DROP FUNCTION "ProjectProgress"."GetStepStatusbyProject"("Common"."InputDBMessage");

CREATE OR REPLACE FUNCTION "ProjectProgress"."GetStepStatusbyProject"(
    userinput "Common"."InputDBMessage")
    RETURNS "Common"."OutputDBMessage"
    LANGUAGE "plpgsql"

    COST 100
    VOLATILE 
AS $BODY$

-- History:
-- 04/24/2020 Nick: Created Function


DECLARE

    status_info jsonb;
    input_params jsonb;
    project_id bigint;
    project_exists bool = true;

    output "Common"."OutputDBMessage";

BEGIN

    input_params := userinput."Parameters";
    project_id := input_params ->> 'Id';

    PERFORM "Log"."LogBeginRoutine"(userinput."UserName", userinput."ApplicationName", 'StepStatuses', 'GetStepStatusbyProject', userinput."ClientId", userinput."SessionId");

    SELECT INTO project_exists (EXISTS(SELECT * FROM "LIMS"."Projects" WHERE "Id" = project_id));
    IF NOT project_exists THEN
        output."ErrorCode" = 1;
        output."UserMessage" = 'project_id id not found';
    ELSE


    SELECT
        array_to_json(array_agg(( ss.*, st."Color",st."Description",st."Icon"))) INTO status_info
    FROM "LIMS"."Projects" as pr INNER JOIN "ProjectProgress"."Steps" as s
            ON s."ProjectId" = pr."Id"
        INNER JOIN (
            SELECT
                stepstatus.*
            FROM
                "ProjectProgress"."StepStatuses" AS stepstatus INNER JOIN
                    (
                        SELECT
                            MAX("Id") m_id, "StepId"
                        FROM
                            "ProjectProgress"."StepStatuses"
                        GROUP BY "StepId"
                    ) AS mss ON mss.m_id =  stepstatus."Id"
            ) as ss
            ON ss."StepId" = s."Id"
        INNER JOIN "ProjectProgress"."StatusTemplates" as st
            ON ss."StatusTemplateId" = st."Id"
    WHERE
        st."Description" != 'Not Started' AND pr."Id" = project_id;



    output."Data" := status_info;
    output."ErrorCode" := 0;
    output."UserMessage" := 'status successfully retrieved.';


    PERFORM "Log"."LogEndSuccessRoutine"(userinput."UserName", userinput."ApplicationName", 'StepStatuses', 'GetStepStatusbyProject', userinput."ClientId", userinput."SessionId");

    return output;
END

 $BODY$;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...