sql >> Database >  >> RDS >> PostgreSQL

Hoe kolomtypes voor CTE (Common Table Expressions) in PostgreSQL specificeren?

Ik denk dat je in jouw geval de typen binnen de VALUES-expressie moet specificeren:

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

Je hebt alleen de typen op de eerste set waarden nodig, PostgreSQL kan de rest afleiden.

Stel dat we bijvoorbeeld twee functies hebben:

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;

Dan

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

geeft je twee int mededelingen terwijl

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

zou je twee bigint . geven mededelingen.



  1. De instellingen voor het bewaken van uw databaseprestaties beoordelen

  2. Hoe kan ik een waarde maken van twee andere waarden in dezelfde tabel in mijn SQL?

  3. Entiteitsframework-verbinding met Oracle-database

  4. Inhoud van databasebestand bekijken in Android Studio