Oracle SQL更新HUGECLOB

时间:2013-12-09 09:36:57

标签: oracle plsql toad

我正在使用TOAD(11.0 R2)进行Oracle。

我需要更新包含NCLOB类型数据的表中的一列。我的UPDATE语句如下所示:

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

问题在于我的SELECT语句中'一词的identifier。紧接在单词'之前的identifier结束字符串。

我希望我只需要纠正一个简单的语法错误。有人可以告诉我如何让上述声明工作吗?

5 个答案:

答案 0 :(得分:1)

试试这个。使用两个单引号''

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

答案 1 :(得分:1)

应该是这个:

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

答案 2 :(得分:1)

试试这个,

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

答案 3 :(得分: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;

答案 4 :(得分:0)

如果您不喜欢双引号并且使用的是Oracle> = 10g,则可以使用引用运算符q(更多信息here):

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