【轉義】使用SQL生成SQL語句時單引號的轉義處理

secooler發表於2010-02-28
“使用SQL語句生成SQL語句”是一個非常實用的技巧。在感受這個技巧帶給我們便利的同時,也要注意使用過程中的一個小攔路虎——對“單引號”的特殊處理。
我們需要對單引號給予特殊的關照,Oracle在單引號中轉義單引號的方法:兩個單引號表示一個單引號。

1.用實際的例子來演示一下
sec@ora10g> col "What's your name?" for a30
sec@ora10g> select 'I''m SECOOLER.' "What's your name?" from dual;

What's your name?
------------------------------
I'm SECOOLER.

2.我們使用這個小技巧生成一份分析SEC使用者下所有表的SQL語句(可以按需定製)
sec@ora10g> SET LIN 300
sec@ora10g> SET HEAD OFF
sec@ora10g> select    'EXECUTE DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'
  2         || ''''
  3         || OWNER
  4         || ''''
  5         || ',TABNAME=>'
  6         || ''''
  7         || TABLE_NAME
  8         || ''''
  9         || ',METHOD_OPT=>'
 10         || ''''
 11         || 'FOR ALL COLUMNS SIZE 254'
 12         || ''''
 13         || ',DEGREE=>4,CASCADE=>TRUE);'
 14    from DBA_TABLES
 15   where WNER = 'SEC';

EXECUTE DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'SEC',TABNAME=>'T',METHOD_OPT=>'FOR ALL COLUMNS SIZE 254',DEGREE=>4,CASCADE=>TRUE);
……

3.小結
只要掌握了單引號的轉義規則,加上一點點的細心,這個著名的SQL生成SQL的小技巧就盡收囊中了。

Good luck.

secooler
10.02.28

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-628186/,如需轉載,請註明出處,否則將追究法律責任。

相關文章