PLS-00201: identifier 'NAME' must be declared
PL/SQL kullandığınız adı göremiyor. Ad yanlış yazılmıştır, bildirilmemiştir, önek olmadan başka bir şemadadır ya da yetkiniz yoktur. Rol üzerinden gelen yetki, saklı birim içinde sayılmaz.
PLS-00201 ne demek?
PL/SQL her adı derleme sırasında çözer. Ad, sahibin görebildiği hiçbir şeyle eşleşmezse PLS-00201 verir; normalde ORA-06550’nin altında görünür. Worksheet’te çalışan kodun prosedürde patlaması sık görülür: roller oturumunuzda etkindir, ama definer’s rights bir birimin içinde değildir.
PLS-00201 neden olur?
- Yanlış yazılmış ya da bildirilmemiş değişken, prosedür veya paket.
- Önek ya da synonym olmadan çağrılan, başka şemadaki bir nesne.
- Paket üzerinde
EXECUTEyetkisinin olmaması. - Yetkinin rol üzerinden gelmesi ve kodun definer’s rights bir birim olması.
PLS-00201 nasıl çözülür?
- Yazımı kontrol edin ve değişkeni bildirin.
- Sahibi önek olarak ekleyin:
hr.pkg_salary.calc; ya da synonym oluşturun. - Yetkiyi doğrudan kodun sahibine verin:
GRANT EXECUTE ON hr.pkg_salary TO app_owner. - Nesnenin var ve görünür olduğunu kontrol edin:
ALL_OBJECTS.
PLS-00201 örneği
Bu kullanıcı prosedürü tanımıyor:
BEGIN
calc_bonus(1);
END;
/
-- ORA-06550: line 2, column 3:
-- PLS-00201: identifier 'CALC_BONUS' must be declared
-- Sahibi önek olarak yazın ve doğrudan yetki verin
GRANT EXECUTE ON hr.calc_bonus TO app_owner;
BEGIN
hr.calc_bonus(1);
END;
/
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
ORA-06550PLS-00306ORA-01031 Tüm Oracle hataları →
Oracle dokümantasyonu: PLS-00201. Oracle, Oracle Corporation’ın tescilli ticari markasıdır. SQLlightspeed’in Oracle ile bir bağlantısı yoktur.