Loglanmış sorguyu ve bind değerlerini çalışabilir hâle getirmek
Uygulama logları sorguyu :yer tutucularla bir satırda, parametre değerlerini başka bir satırda verir. Sorunu bir SQL istemcisinde yeniden üretmek için ikisini elle birleştirmek gerekir; bu hem sıkıcıdır hem de altıncı parametrede hata yapmak kolaydır. Bu araç yerleştirmeyi yapıyor ve her değeri hedef lehçeye göre biçimlendiriyor.
Yalnızca gerçek bind değişkenlerini tanıyor. Bir dize sabitinin ya da yorumun içindeki iki nokta bind değildir; biçim maskesindeki :mi de öyle — TO_CHAR(tarih, 'HH24:MI') hiçbir parametre içermez ama saf bir ayrıştırıcı orada bir tane görür. Oracle'ın kendisi ters yönde aynı hatayı yapar ve ayrılmış bir sözcük gibi adlandırılmış gerçek bir bind gördüğünde ORA-01745 verir.
Çıktı yalnızca hata ayıklama içindir. Üretim kodunda bind'leri bırakın: değerleri SQL metnine gömmek enjeksiyonun tam olarak nasıl olduğudur, ayrıca paylaşılan imleci de çöpe atar ve her çağrı yeniden ayrıştırılır.
Tarihler nasıl ele alınıyor?
- Yalnızca tarih içeren bir değer DATE '2026-08-24' olur; saat de içeriyorsa açık biçim maskesiyle TO_DATE üretilir. Böylece sonuç oturumun NLS_DATE_FORMAT ayarına bağlı kalmaz.
ORA-01745 ne demek?
- "Geçersiz ana bilgisayar/bind değişkeni adı". Genelde ayrılmış bir sözcükle adlandırılmış bir bind, ya da sabit sanırken Oracle'ın bind okuduğu bir iki nokta — yukarıdaki :mi durumu klasik örneği.