PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak określić typy kolumn dla CTE (Common Table Expressions) w PostgreSQL?

Myślę, że w twoim przypadku musiałbyś określić typy wewnątrz wyrażenia WARTOŚCI:

WITH t (f0, f1) as (
  values 
     (1::bigint, 10::bigint),
     (2, 20)
)...

Potrzebujesz tylko typów z pierwszego zestawu wartości, PostgreSQL może wywnioskować resztę.

Załóżmy na przykład, że mamy dwie funkcje:

create function f(bigint, bigint) returns bigint as $$
begin
    raise notice 'bigint';
    return $1 * $2;
end;
$$ language plpgsql;

create function f(int, int) returns int as $$
begin
    raise notice 'int';
    return $1 * $2;
end;
$$ language plpgsql;

Następnie

WITH t (f0, f1) as (
    values
        (1, 10),
        (2, 20)
)
select f(f0, f1) from t;

da ci dwa int powiadomienia, podczas gdy

WITH t (f0, f1) as (
    values
        (1::bigint, 10::bigint),
        (2, 20)
)
select f(f0, f1) from t;

dałby ci dwa bigint powiadomienia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Znajdź różnicę między znacznikami czasu w sekundach w PostgreSQL

  2. Mac psql/readline — biblioteka nie jest załadowana

  3. indeks postgresql w kolumnie string

  4. Rozpakuj tablicę o jeden poziom

  5. PostgreSQL Fibonacci Sequence - Zapytanie nie ma miejsca docelowego dla danych wynikowych