Hi my script:
CREATE OR REPLACE FUNCTION "Calc"."getDataRepository"(a text[])
  RETURNS numeric AS
$BODY$
DECLARE
/*
 ARRAY STRUCTURE
Metric_Name, Date, Value_Type

Value_Type:
 1. N - Numerator
2. D - Denominator
 */

 vRetValue "DataRepository"."tblDataRepository"."NumeratorValue"%TYPE;
 vMetricName "Dictionary"."tblDataMetrics"."MetricName"%TYPE;
 vRowDate "DataRepository"."tblDataRepository"."RowDate"%TYPE;
 vDataMetricId "Dictionary"."tblDataMetrics"."DataMetricId"%TYPE;
BEGIN
vMetricName := a[1];
 vRowDate := a[2]::timestamp(0);

 SELECT "DataMetricId" INTO vDataMetricId
FROM "Dictionary"."tblDataMetrics"
 WHERE "MetricName" = vMetricName;

 CASE
WHEN a[3] = 'N' THEN
 SELECT "NumeratorValue" INTO vRetValue
FROM  "DataRepository"."tblDataRepository"
 WHERE "DataMetricId" = vDataMetricId AND "RowDate" = vRowDate;
 WHEN a[3] = 'D' THEN
SELECT "DenominatorValue" INTO vRetValue
 FROM  "DataRepository"."tblDataRepository"
WHERE "DataMetricId" = vDataMetricId AND "RowDate" = vRowDate;
 ELSE
vRetValue := NULL;
 END CASE;

 RETURN vRetValue;
END
$BODY$
  LANGUAGE plpgsql VOLATILE SECURITY DEFINER
  COST 100;
ALTER FUNCTION "Calc"."getDataRepository"(text[])
  OWNER TO postgres;


CREATE OPERATOR "Calc".@#(
  PROCEDURE = "Calc"."getDataRepository",
  RIGHTARG = _text);

COMMENT ON OPERATOR "Calc".@#(NONE, _text) IS '
Usage Example:
SET LOCAL search_path = "Calc";
SELECT @# (''{"MY_METRIC","2012-01-01","N"}'')
';

Regards,
Bartek


2012/3/12 Guillaume Lelarge <guilla...@lelarge.info>

> On Mon, 2012-03-12 at 14:51 +0100, Bartosz Dmytrak wrote:
> > Hi,
> > it looks like operator script is generated incorrectly:
> > eg.
> > -- Operator: Calc.@#(NONE, _text) -- Lack of quotation
> >
> > -- DROP OPERATOR Calc.@#(NONE, _text); -- Lack of quotation
> >
> > CREATE OPERATOR Calc.@#(
> >   PROCEDURE = """Calc"".""doSomething""", -- Wrong quotation
> >   RIGHTARG = _text);
> > COMMENT ON OPERATOR Calc.@#(NONE, _text) IS 'this is comment'; -- Lack
> of
> > quotation
> >
> >
> > Schema name and function should be quoted properly:
> >
> > -- Operator: "Calc".@#(NONE, _text)
> >
> > -- DROP OPERATOR "Calc".@#(NONE, _text);
> >
> > CREATE OPERATOR "Calc".@#(
> >   PROCEDURE ="Calc"."doSomething",
> >   RIGHTARG = _text);
> > COMMENT ON OPERATOR "Calc".@#(NONE, _text) IS 'this is comment';
> >
>
> Can you give me the script that allowed you to create the operator? The
> script should contain the function definition. Without it, it would be a
> lot of work to reproduce your issue.
>
>
> --
> Guillaume
> http://blog.guillaume.lelarge.info
> http://www.dalibo.com
>
>
> --
> Sent via pgadmin-support mailing list (pgadmin-support@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgadmin-support
>

Reply via email to