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

Cara menggunakan argumen campuran int dan numerik dalam fungsi Postgres 9.1+

Jenis polimorfik saat ini ketat - dalam kasus lain, PostgreSQL mencoba untuk memberikan konstanta ke jenis yang paling umum, tetapi langkah ini tidak ada untuk jenis polimorfik - jadi dalam kasus ini, ketika Anda telah menjelaskan masalah, Anda harus mentransmisikan secara eksplisit atau Anda sebaiknya tidak menggunakan tipe polimorfik. Paket B telah berakhir kelebihan fungsi .

CREATE OR REPLACE FUNCTION public.icase1(cond1 boolean,
                                         res1 integer, conddefault integer)
RETURNS integer AS $$
SELECT CASE WHEN $1 THEN $2 ELSE $3 END;
$$ LANGUAGE sql;

CREATE OR REPLACE FUNCTION public.icase1(cond1 boolean,
                                         res1 numeric, conddefault numeric)
RETURNS numeric AS $$
SELECT CASE WHEN $1 THEN $2 ELSE $3 END;
$$ LANGUAGE sql;

Maka kode Anda akan berfungsi seperti yang diharapkan:

postgres=> select icase1(true, 1.0, 0);
 icase1 
--------
    1.0
(1 row)

postgres=> select icase1(true, 1.0, 1.0);
 icase1 
--------
    1.0
(1 row)

postgres=> select icase1(true, 1, 0);
 icase1 
--------
      1
(1 row)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psql:tidak dapat terhubung ke server:Koneksi ditolak Kesalahan saat menghubungkan ke basis data jarak jauh

  2. Cara menginstal pustaka klien PostgreSQL untuk PHP di Windows dengan SSL diaktifkan

  3. Postgres menyetel komit otomatis secara global

  4. penyedia PostgreSQL di .net dengan dukungan untuk TransactionScope

  5. Django 1.8 ArrayField menambahkan &memperpanjang