oracle_单引号问题和execute immediate 赋值问题

今天初步学习了oracle后,发现了一些关键的小技巧

(1) 有关单引号的问题

在使用||进行字符串或者变量的拼接时,常常会用到单引号。

      单引号有两个作用, 一个是用作单引号,一个是转义。单引号普通的使用不必多说,重点在于转义。

当你如果想对一个变量进行一些sql语句的操作时,往往会要使用 '+变量名+’的形式

例如:select count(1)  from sys.user_tables where table_name='tableName'    //这里的tableName是一个变量,假设它的值为emp

        此时如果调用的话,那么就会出现一些错误,因为此时的table_name='tableName',并不是我们想要的值,我们要的值为table_name='emp'

所以问题来了,如何实现

此时就用到单引号的转义字符的功能

当单引号出现多个时,第二个单引号便是转义字符。

例如:'select count(1)  from sys.user_tables where table_name='||''''||tableName||''''

''''中,开头和结尾的'作为字符串的引用,中间两个的第一个为转义字符,中间两个的第二个为单纯的',所以,通过这种方式,我们就解决了刚刚的功能。

 execute immediate 'select count(1)  from sys.user_tables where table_name='||''''||tableName||'''';  来执行

 

(2)execute immediate 赋值问题

 select count(1) into v_aa from emp where empno=1; //v_aa 是一个变量

通过这种方法对v_aa这个变量赋值时,如果采用execute immediate 执行这条语句进行赋值,此时是错误的。

      应该是

execute immediate ' select count(1)  from emp where empno=1'into v_aa;

没错,如果使用execute immediate,赋值应该放在最后!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值