PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menentukan tipe kolom untuk CTE (Common Table Expressions) di PostgreSQL?

Saya pikir Anda harus menentukan jenis di dalam ekspresi VALUES dalam kasus Anda:

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

Anda hanya memerlukan tipe pada kumpulan nilai pertama, PostgreSQL dapat menyimpulkan sisanya.

Misalnya, kita memiliki dua fungsi:

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;

Kemudian

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

akan memberi Anda dua int pemberitahuan sedangkan

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

akan memberi Anda dua bigint pemberitahuan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat dump Postgres dan menyimpan ke server lain

  2. Bagaimana Anda mendokumentasikan kode database Anda untuk melihat ketergantungan antara objek database?

  3. Apakah ada klien PostgreSQL yang bagus untuk linux?

  4. Pergi dan IN klausa di Postgres

  5. Kembalikan baris SETOF dari fungsi PostgreSQL