PLS-00306: wrong number or types of arguments in call to 'NAME'
Çağrı, prosedür ya da fonksiyonun hiçbir sürümüne uymuyor: argüman sayısı yanlış ya da bir tip uymuyor. Çağrıyı güncel tanımla karşılaştırın.
PLS-00306 ne demek?
PL/SQL, bir çağrıyı alt programın bildirilen parametreleriyle, paketteki bütün overload’lar dahil, eşleştirir. Hiçbir sürüm uymazsa adıyla birlikte PLS-00306 verir. Çoğunlukla bir paket tanımı değişip çağıran kod aynı kaldığında görülür.
PLS-00306 neden olur?
- Fazla ya da eksik argüman.
- Yanlış tipte argüman; örneğin skaler beklenen yerde record.
- Var olmayan adlı bir parametre:
p_idd => 1. - Değişmiş bir paket tanımı ya da başka şemadaki eski sürüme yapılan çağrı.
PLS-00306 nasıl çözülür?
- Güncel parametrelere bakın:
DESC paket_adiya daALL_ARGUMENTS. - Adlandırılmış gösterim kullanın: okunması kolaydır ve yanlış adları hemen ortaya çıkarır.
- Tip uymuyorsa argümanları açıkça dönüştürün.
- Çağrının gerçekte hangi şemanın nesnesine gittiğini kontrol edin.
PLS-00306 örneği
LENGTH tek argüman alır:
DECLARE
x NUMBER;
BEGIN
x := LENGTH('a', 'b');
END;
/
-- ORA-06550: line 4, column 8:
-- PLS-00306: wrong number or types of arguments in call to 'LENGTH'
Saklı bir birimin güncel imzası:
SELECT argument_name, position, data_type, in_out
FROM all_arguments
WHERE package_name = 'PKG_SALARY'
AND object_name = 'CALC'
ORDER BY overload, position;
SQLlightspeed’de
Bir ifade hata verdiğinde SQLlightspeed’in hata paneli, hata kodunu sade bir Türkçe açıklama ve ne yapmanız gerektiğine dair bir öneriyle; Oracle’ın kendi mesajı ve Oracle dokümantasyonuna bağlantıyla birlikte gösterir — bu hata ve sık görülen onlarca başka hata için.
İlgili hatalar
PLS-00201ORA-06550ORA-06502 Tüm Oracle hataları →
Oracle dokümantasyonu: PLS-00306. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.