关于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中就必须用''.

转载于:https://my.oschina.net/lvzjane/blog/144632

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值