大家好!在porcedure中用execute immediate 'create table tab1 as select ...';原始sql: create table tab1 as select a||'_'||b where nvl(a,'0') <>'0'换行后sql: 'create table tab1 as' ||
'select a||'_'||b where nvl(a,'0') <>'0''在上面换行后sql中,|| 和 ' 符号 的用法遇到2个问题,如下:1、语句太长必须换行显示。使用符号||作为换行连接连接符。但在sql内容中,同时存在||符号(用来拼连字段)。
sql内容中的||符号是否需要特殊处理呢?2、使用单引号' 来表示sql语句。但在sql内容中,同时存在有意义的单引号'。如何处理有意义的单引号?
'select a||'_'||b where nvl(a,'0') <>'0''在上面换行后sql中,|| 和 ' 符号 的用法遇到2个问题,如下:1、语句太长必须换行显示。使用符号||作为换行连接连接符。但在sql内容中,同时存在||符号(用来拼连字段)。
sql内容中的||符号是否需要特殊处理呢?2、使用单引号' 来表示sql语句。但在sql内容中,同时存在有意义的单引号'。如何处理有意义的单引号?
-->
execute immediate 'create table tab1 as select a||''-''||b where nvl(a,''0'')<>''0''';
'abc'||
'de'
等价于'abcde'
'abc'||'
de'等价于
'abc
de';
将一个字符串分成2段拼接,注意空格
你上面换行后的语句就应该在as后或select 前补一个空格