2013-12-09 9 views
0

Я использую TOAD (11.0 R2) для Oracle.Обновление Oracle SQL HUGECLOB

Мне нужно обновить один из столбцов таблицы, содержащей данные типа NCLOB. Мой UPDATE заявление выглядит следующим образом:

UPDATE table1 
SET string_content = 'SELECT my_string FROM table2 WHERE name = 'identifier'' 
WHERE id = 10000 

Проблема заключается с ' вокруг слова identifier в моем ЗЕЬЕСТЕ. ', который немедленно предшествует слову identifier, завершает строку.

Надеюсь, что есть просто синтаксическая ошибка, которую мне нужно исправить. Может ли кто-нибудь показать мне, как я могу заставить вышеупомянутое заявление работать?

+0

Вопрос не ясен –

ответ

1

Попробуйте это. Используйте две одинарные кавычки ''

UPDATE table1 
SET string_content = (SELECT my_string FROM table2 WHERE name = ''identifier'') 
WHERE id = 10000 
1

Должно быть это один:

UPDATE table1 
SET string_content = 'SELECT my_string FROM table2 WHERE name = ''identifier''' 
WHERE id = 10000 
1

Попробуйте, как это,

UPDATE table1 
SET string_content = 'SELECT my_string FROM table2 WHERE name = ''identifier''' 
WHERE id = 10000 
0

Если вам не нравится двойной кавычки и вы используете Oracle> = 10g вы можете использовать оператор цитаты q (подробнее here):

UPDATE table1 
SET string_content = 'SELECT my_string FROM table2 WHERE name = ' || q'['identifier']' 
WHERE id = 10000 
1

В Oracle вы можете использовать функцию для цитирования строковых литералов. Он рассматривает что-либо в восклицательных знаках, как строковый литерал. Не нужно удвоить цитату. Link for reference

DECLARE 
    var_Updated_sql CLOB := q'!SELECT * FROM aTable WHERE name = 'aName';!'; 
BEGIN 
    UPDATE fakeTable SET sqlStatement = var_Updated_sql WHERE sql_id = 1; 
END; 
Смежные вопросы