Öyleyse offcid VARCHAR2 olarak tanımlanmış ve sayısal bir sütun değil? Bu durumda büyük olasılıkla, ikame değişkeninizi tırnak içine almak isteyeceksiniz, böylece iletilen değer de bir karakter olarak ele alınacaktır. (Sütunun, sayısal bir sütun olarak tanımlanıp tanımlanmaması başka bir konudur.)
Sorunuzu anlıyorsanız, bir ortamın neden tek bir ortamda "geçersiz sayı" hatasına neden dönüştüğünü bilmek istersiniz. Her iki ortamın da aynı verilere sahip olduğu varsayılıyor mu? Bir dize ile bir sayı karşılaştırmayı denerseniz, Oracle ilk olarak karakter değerini önce bir sayıya dönüştürmeye ve sonucu sayıyla karşılaştırmaya çalışacaktır. bir sayıya dönüştürülebilir '1' Burada dize
SELECT * FROM dual WHERE TO_NUMBER('1') = 1
ve tüm iyi:
SELECT * FROM dual WHERE '1' = 1
aslında bu şekilde değerlendirilecektir: Yani böyle bir şey vardır.
SELECT ... where TO_NUMBER(offcid) = 10
zaman zaman hatta masa yaptığında "geçersiz sayı" hatası alabilirsiniz nedeni: 2, 10, diyelim ki, ile ikame edildiği & eğer durumda
, sorgu olarak değerlendirilecektir bir sayıya dönüştürülemeyen offcid değerlere sahip olmanız, Oracle'ın bir sayıya dönüştürülemeyen bir değer içeren bir satırı gerçekten dikkate alıp almadığına bağlı olarak değişir. Bu, sorgu için kullanılan yürütme planında sürüyor.
Diyelim ki var diyelim böyle bir sorgu:
SELECT ... FROM some_table where TO_NUMBER(offcid) = 17 AND another_column = 4
ve Oracle tam tablo some_table taraması yoksa senin kusurlu satır offcid etti = 'ONE7' ve another_column = 2
diyelim tüm satırları karşılaştırır ve bir sayıya dönüşemeyen bir değere ('XYZ') dönüşemeyen satır çarptığında hataya girersiniz. Ancak, eğer Oracle, else_column = 4 ile satırları izole etmek için ilk önce kullanmayı seçen bir else_column üzerinde bir dizininiz varsa, bu, bir başka_column = 2 ile satırlara bakmaz ve 'XYZ' yi bir sayıya dönüştürmeye çalışmayacaktır. hatayı alamazsınız.
Çünkü kullanılan farklı yürütme planlarının iki tam olarak aynı sorgu ile tam olarak aynı verilerle ortamları ancak sahip olmak mümkündür (veritabanı versiyonları şekilde değişikliklere neden bilinmektedir sorgu etkileyebilir iyileştirici çalışmalar planlar) sorgunuz tek bir ortamda iyi çalışabilir, ancak diğerinde başarısız olabilir.
Bu mantıklı mı?