Приведите Const Integer к Bigint в Postgres - PullRequest
8 голосов
/ 20 марта 2012

Я получаю приведенную ниже ошибку при запуске приведенного ниже сценария.Моя цель - создать функцию в Postgres, которая будет возвращать 1 как bigint.Помогите пожалуйста!

hashtagpostgresnoobie

ОШИБКА: тип результата функции должен быть bigint из-за параметров OUT

CREATE OR REPLACE FUNCTION GetNumberOne(
    OUT numberone bigint)
  RETURNS SETOF record AS
$BODY$

    SELECT CAST(1 AS BIGINT) AS "NUMBERONE";

$BODY$
  LANGUAGE sql VOLATILE;

1 Ответ

15 голосов
/ 20 марта 2012

Вы неожиданно столкнулись с этой функцией) Запись требует двух и более полей.Поэтому, когда у вас есть только одна переменная out, тогда результат должен быть скалярным.

Таким образом, вы можете просто делать то, что запрашивают компиляторы)

CREATE OR REPLACE FUNCTION GetNumberOne(
        OUT numberone bigint)
      RETURNS bigint AS
    $BODY$

        SELECT CAST(1 AS BIGINT) AS "NUMBERONE";

    $BODY$
      LANGUAGE sql VOLATILE;

plpgsql пример:

CREATE OR REPLACE FUNCTION NumberOne()
      RETURNS bigint AS
    $BODY$
      DECLARE num bigint;
      BEGIN
        num := 1;
        RETURN num;
      END
    $BODY$
      LANGUAGE plpgsql VOLATILE;
      select * from NumberOne()
...