下面是我的存储过程:
CREATE OR REPLACE PROCEDURE TCT_WEBAPP.DBO.GET_FILTERED_PAGINATION_PROVIDERS(
"MONTH_START" VARCHAR(20),
"MONTH_END" VARCHAR(20),
"IP_FILTER" VARCHAR(100),
"PROPOSALS_TABLE_NAME" VARCHAR(100),
"TIER" VARCHAR(20),
"CITY" VARCHAR(20),
"TYPE" VARCHAR(20),
"PAGE_OFFSET" INTEGER,
"PAGE_SIZE" INTEGER
)
RETURNS TABLE (
"PROVIDERNAMEADJUSTED" VARCHAR(250),
"PROVIDERTYPEADJUSTED" VARCHAR(250),
"PROVIDERCITYADJUSTED" VARCHAR(250),
"STANDARDTIER" VARCHAR(250),
"TOTALACTUALCOST" FLOAT,
"TOTALCHANGE" FLOAT,
"TOTALCHANGEPERCENT" FLOAT
)
LANGUAGE SQL
EXECUTE AS OWNER
AS
'
DECLARE
res RESULTSET DEFAULT (
SELECT
PROVIDER.PROVIDERNAMEADJUSTED,
PROVIDER.PROVIDERTYPEADJUSTED,
PROVIDER.PROVIDERCITYADJUSTEDGROUP,
PROVIDER.STANDARDTIER,
SUM(PROPOSAL_CLAIMS.ACTUALCOST) AS TOTALACTUALCOST,
SUM(PROPOSAL_CLAIMS.CHANGE) AS TOTALCHANGE,
SUM(PROPOSAL_CLAIMS.CHANGE) / SUM(PROPOSAL_CLAIMS.ACTUALCOST) * 100 AS TOTALCHANGEPERCENT
FROM
(
SELECT
c.PROGRAMNAME,
c.PROGRAMTPA,
c.PROVIDERCODE,
c.SERVICECODE,
c.NOOFUNITS,
c.ACTUALCOST,
c.INCURRALMONTHBRACKET,
c.CLAIMTYPEIBNR,
p.CLEANEDPROPOSAL,
p.CLEANEDPROPOSAL * c.NOOFUNITS AS PROPOSEDCOST,
PROPOSEDCOST - c.ACTUALCOST AS CHANGE
FROM
CLAIMSDATATCT c
INNER JOIN
TABLE(:PROPOSALS_TABLE_NAME) p ON c.SERVICECODE = p.SERVICECODE
WHERE
c.INCURRALMONTHBRACKET >= TO_NUMBER(:MONTH_START)
AND c.INCURRALMONTHBRACKET <= TO_NUMBER(:MONTH_END)
AND c.CLAIMTYPEIBNR NOT LIKE
CASE WHEN LOWER(:IP_FILTER) = ''exclude ip'' THEN ''Inpatient'' END
) AS PROPOSAL_CLAIMS
LEFT JOIN
(
SELECT
programname,
programtpa,
providernameadjusted,
providercode,
CASE WHEN lower(providercityadjustedgroup) = ''northern emirates'' THEN ''NE'' ELSE providercityadjustedgroup END AS providercityadjustedgroup,
standardtier,
CASE WHEN providertypeadjusted ILIKE ''hospital'' THEN ''Hospital'' ELSE ''Clinic'' END AS providertypeadjusted
FROM
tct_webapp.dbo.Map_Provider
WHERE
lower(standardtier) = lower(:TIER)
AND lower(providercityadjustedgroup) = lower(:CITY)
AND lower(providertypeadjusted) = lower(:TYPE)
) AS PROVIDER
ON
PROPOSAL_CLAIMS.PROGRAMNAME = PROVIDER.PROGRAMNAME
AND PROPOSAL_CLAIMS.PROGRAMTPA = PROVIDER.PROGRAMTPA
AND PROPOSAL_CLAIMS.PROVIDERCODE = PROVIDER.PROVIDERCODE
GROUP BY
PROVIDER.PROVIDERNAMEADJUSTED,
PROVIDER.PROVIDERTYPEADJUSTED,
PROVIDER.PROVIDERCITYADJUSTEDGROUP,
PROVIDER.STANDARDTIER
LIMIT :PAGE_SIZE
);
BEGIN
RETURN TABLE(res);
END;
';
我试着把它叫作
CALL GET_FILTERED_PAGINATION_PROVIDERS('202201', '202212', 'Exclude IP', 'Proposals_igor', 'Tier 1', 'Dubai', 'Clinic', 15, 15);
为什么我会收到这个错误:
错误行59在位置25处出现意外的'::'.(第59行)
我查过了,LIMIT
美元的声明肯定有问题.但我不明白是什么.当我把它取下来时,一切都很好.
如果使用像10这样的硬编码值,它也可以正常工作.但这不适用于一个论点.我做错了什么?