Wednesday, December 10, 2025

.::: Troubleshoot PostgreSQL procedure spbuy(integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer) does not exist :::.

 

Dari gambar error tersebut terlihat jelas penyebabnya:

procedure spbuy(integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer) does not exist

Artinya: FUNCTION atau Stored Procedure spbuy (atau sptaxsample) membutuhkan 15 parameter, tapi saat dipanggil hanya diberikan 14 parameter.

. Tujuan Anda

Anda ingin mensimulasikan kasus tersebut pada database sample PostgreSQL dengan database contoh bernama hris.
 
Saya buatkan contoh struktur database, fungsi, dan pemanggilan yang benar & salah, sehingga error yang sama bisa direplikasi.

. SIMULASI DI PostgreSQL: Database hris

1. Buat Database Sample
CREATE DATABASE IF NOT EXISTS hris;
USE hris;

2. Buat Sample Stored Procedure spbuy

Ini sekedar contoh dengan 15 parameter seperti kebutuhan kasus Anda:

CREATE OR REPLACE PROCEDURE spbuy(
    p1 INT,
    p2 INT,
    p3 INT,
    p4 INT,
    p5 INT,
    p6 INT,
    p7 INT,
    p8 INT,
    p9 INT,
    p10 INT,
    p11 INT,
    p12 INT,
    p13 INT,
    p14 INT,
    p15 INT
)
LANGUAGE plpgsql
AS $$
BEGIN
    RAISE NOTICE 'Simulasi spbuy berhasil dipanggil';
END;
$$;


3. Contoh Kesalahan (pemicu error seperti di screenshot)

Hanya 14 parameter:

CALL spbuy(1,2,3,4,5,6,7,8,9,10,11,12,13,14);

Expected error di PostgreSQL:

teguhth=# CALL spbuy(1,2,3,4,5,6,7,8,9,10,11,12,13,15);
ERROR:  procedure spbuy(integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer) does not exist
LINE 1: CALL spbuy(1,2,3,4,5,6,7,8,9,10,11,12,13,15);
             ^
HINT:  No procedure matches the given name and argument types. You might need to add explicit type casts.
teguhth=#
teguhth=# CALL spbuy(1,2,3,4,5,6,7,8,9,11,12,13,15);
ERROR:  procedure spbuy(integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer) does not exist
LINE 1: CALL spbuy(1,2,3,4,5,6,7,8,9,11,12,13,15);
             ^
HINT:  No procedure matches the given name and argument types. You might need to add explicit type casts.
teguhth=#

 


4. Contoh Pemanggilan yang Benar

Dengan 15 parameter lengkap:

teguhth=# CALL spbuy(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15);
NOTICE:  Simulasi spbuy berhasil dipanggil
CALL
teguhth=#

 

5. Rekomendasi Solusi untuk Kasus Asli Anda

5.1 Cek jumlah parameter SP di PostgreSQL:

SELECT pg_get_functiondef(oid)
FROM pg_proc
WHERE proname = 'spbuy';
 

5.2 Samakan jumlah parameter di aplikasi:

{ call spbuy(?,?,?,?,?,?,?,?,?,?,?,?,?) }

Jika SP/FUNCTION berubah versi (param nambah), aplikasi harus update.

Bila Anda Mau, Saya Bisa:

? Cocokkan SP spbuy Anda yang sebenarnya
? Analisa parameter masing-masing dan mapping dari aplikasi
? Deteksi versi mana yang tidak sinkron (Dev/QA/Prod)
? Generator template call otomatis untuk 13 param

Apakah Anda ingin saya bantu review struktur parameter SP Anda yang asli?
Jika ya, silakan kirim:

SELECT pg_get_functiondef(oid)
FROM pg_proc
WHERE proname = 'spbuy';

No comments:

Post a Comment

Popular Posts