2012-01-21 3 views
1

Можно создать дубликат:
How to handle a single quote in Oracle SQLвставки запроса в базу данных оракула

Мой Senario: Я хочу, чтобы сохранить запрос (не результирующего набора) в базе данных. Я использую Java как интерфейс; Моя таблица (Querytab) имеет следующие поля:

sno VARCHAR2(1024) 
QUERY VARCHAR2(4000) 

Проблема заключается в том, когда я ввожу запрос, который имеет условия например insert into querytab values('100','select * from querytab where sno ='100'');

ОШИБКА в строке 1: ORA-00933: команды SQL не должным образом закончился

Проблема заключается в следующем: Queryvalue получает прекращается, когда он находит ' Как решить эту проблему. Спасибо заранее.

+0

@Mat: Это не дублировать то, что вы говорите ... Он хочет, чтобы хранить query ... –

+2

Проблема такая же. Вам нужно избегать строк. (И если вы делаете это из кода, вы должны использовать подготовленные операторы и связывать переменные.) – Mat

+0

@Mat Спасибо за помощь, что его рабочий чувак! Спасибо alot – special

ответ

1

Используйте PreparedStatement, чтобы избежать строки.

Что-то вроде этого:

sql="insert into querytab values (?,?)"; 
PreparedStatement ps=conn.prepareStatement(sql); 
ps.setString(1,"100"); 
ps.setString(2,"select * from querytab where sno ='100'"); 
ps.executeUpdate(); 
1

попробовать это,

insert into querytab values('100','select * from querytab where sno =100'); 
+1

Вы сохраняете другую строку. Это не строка, которую OP хочет сохранить. –

2

Чтобы вставить одиночные кавычки, что вам нужно, чтобы избежать их. Экранирование осуществляется просто их дублированием:

insert into querytab 
(sno, query) 
values 
('100','select * from querytab where sno = ''100'' '); 

Это объясняется в руководстве:

http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements003.htm#i42617

Смежные вопросы