关于pl/sql中的转义

在项目中进行pl/sql编程时候,如果执行一些动态sql,经常会出现转义的问题,对于初学者个人感觉会经常出现问题.根据个人经验,总结如下。如有错误,希望各位大虾指出。才疏学浅勿喷。

eg:

v_ename='lvz';
v_sql :='select e.* from emp e where e.ename like '''||v_ename||'%''';
--像这种动态拼接的sql,如果不细心或者不了解原理经常会出现错误的。这个到底是如何转义的呢?
--1.首先'有两个作用:
--(a):对字符串的定界。
       eg: v_ename :='lvzjane';
           dbms_output.put_line(v_ename);
--     这个时候控制台输出的就是lvzjane.
--(b):'本身作为一个字符串输出,'是字符串的一部分
       eg: v_ename :=''''; 
           dbms_output.put_line(v_ename);
--     这个时候控制台输出的就是'
--这个时候我们就可以解释一下为什么文章开头的v_sql为什么那样写了。like后面的前两个'符号就表示的是字符串',后面的一个'就表示字符串的定界,在连接符||后面的%''是表示字符串%','%和最后一个'就表示对字符串%'的定界。
--这样分析就可以当我们执行dbms_output.put_line(v_sql);控制台就会输出
select e.* from emp e where e.ename like 'lvz%';
--综上所述:要想表示一个'字符串,那么pl/sql中就必须用''.

你可能感兴趣的:(pl/sql,转义符)