1. || 的作用是连接字符串。
如:
字符串常量连接: 'abc'||'def' ;
字符串变量连接: v_variable1 || v_variable2 等。
2.
首先: ' 有两个作用:
1).对字符串定界。如v_sqlstr := 'abcdef';
就界定了一个字符串abcdef; ‘ 本身不是字符串的一部份。
2). ' 本身作为一个字符,' 是字符串的一部份。
如 :v_sqlstr :=''''; 指代字符串' 。 这时,' 需要转义。
begin
dbms_output.put_line('''');
end;
/
'
PL/SQL procedure successfully completed.
要表示一个' 字符 , plsql中需要用'' 来表示。
‘’ 相当于 字符 ‘ 。
输出字符a:
dbms_output.put_line('a');
输出字符‘:
dbms_output.put_line('''');
3. 开始的alter前面的'不用转义,
因为它是定界符。
4.我们知道:
alter session set nls_date_language='AMERICAN';
是完整的sql语句,
其中的两个' 在sql 中 ,是定界符,但是到了plsql中,整个sql语句成了一个字符串,所以'成为了两个字符。
字符就需要转义,
所以:
nls_date_language='
在plsql字符串中应该写成:
nls_date_language=''
5. 如果我们做如下置换:
假设:表定界的' 可以用 () 来置换,
表字符的' 可以用 " 来置换,那么:
sql_string 可以写成:
sql_string := (alter session set nls_date_language=")||(AMERICAN)||(");
这样就更好理解了。