2016-03-21 23 views
0

ı Java bir select sorguyu yürütmek çalışıyorum, zor kısmı koşulu ve column hem spaces ile bir dize olması ile satır için Oracle DB Arama:Java - boşluklar (ORA-00920)

String query = "select rule_name "+ 
    " from rules " + 
    " where rule_name = " m_rule; //rule_name = str tf //m_rule = str tf 

Yani sorgu çıkışı:

select rule_name 
from rules 
where rule_name = str tf 

hata kodu - ORA-00920 - Ben çünkü boşluk olduğunu inanıyoruz. Bunu düzeltmenin bir yolu var mı? temelde karşı karşıya

+3

Bu, hazırlanmış deyimleri parametrelerle kullanmak için kullanılan birçok durumdan biridir. Http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html adresine bakın. –

+0

ORA-00933 "komutu düzgün şekilde sonlandırılmadı" ifadesini, gösterdiğiniz str tf değeriyle alacaksınız? –

+0

@AlexPoole şimdilik hata ORA-00920'dir. neden ORA-00933? –

cevap

0

hatanın anlamı şudur:

ORA-00920: geçersiz ilişkisel operatöre

Bu soruna neden olan boş. Java kodunuz koşullu parametreyi şu şekilde yazmalıdır:

String query = "select rule_name "+ 
    " from rules " + 
    " where rule_name = '" + m_rule + "'"; 
Bu yardımcı olacaktır!

+1

'm_rule'den dize değeri, çift tırnak değil, tek tırnak içine alınacaktır. Bağlama parametreli hazırlanan ifade elbette daha iyi olurdu. –

+0

Teşekkürler @AlexPoole, cevabımı düzenledim –

+0

Yanıtı deneyin ve yayınlayın. –

İlgili konular