oracle 单引号拼凑和动态sql

a.单引号问题(')

   在oracle中4个单引号''''代表一个单引号'。在动态sql拼凑中我们经常需要拼凑单引号。比如:

  变量 中带单引号:IV_DATE_FORMAT:=''''||'YYYYMM'||'''';

  动态sql中用单引号:sqlStr := 'select * from tbName where name = ' ||''''||nameValue||'''';

b.动态sql执行和传值(EXECUTE IMMEDIATE )

  例子:update

  EXECUTE IMMEDIATE 'UPDATE TF_B_DAILYSALES_STAT SET '||IV_COL_NAME||'=:1'||
                                                           ' WHERE RES_KIND_CODE = :2'||
                                                             ' AND BRAND_CODE = :3'||
                                                             ' AND MODEL_CODE = :4'||
                                                             ' AND EPARCHY_CODE = :5'||
                                                             ' AND CITY_CODE = :6'||
                                                             ' AND STOCK_ID = :7'||
                                                             ' AND SALE_TYPE = :8'||
                                                             ' AND SUBSTR(OPER_DATE_STR,1,6) = TO_CHAR(SYSDATE-1, '||IV_DATE_FORMAT||')'
             USING RS.SALE_NUM, RS.RES_KIND_CODE, RS.BRAND_CODE, RS.MODEL_CODE, RS.EPARCHY_CODE, RS.CITY_CODE, RS.STOCK_ID, RS.SALE_TYPE;

 例子:insert

 EXECUTE IMMEDIATE 'INSERT INTO TF_B_DAILYSALES_STAT'||
                                            '(TRADE_ID,'||
                                            ' OPER_DATE_STR,'||
                                            ' OPER_TIME,'||
                                            ' STAT_TYPE,'||
                                            ' RES_KIND_CODE,'||
                                            ' BRAND_CODE,'||
                                            ' MODEL_CODE,'||
                                            ' PROVINCE_CODE,'||
                                            ' EPARCHY_CODE,'||
                                            ' CITY_CODE,'||
                                            ' STOCK_ID,'||
                                            ' SALE_TYPE,'||IV_COL_NAME||
                                            ')VALUES(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13)'
              USING RS.TRADE_ID, RS.OPER_DATE_STR, RS.OPER_TIME, RS.STAT_TYPE, RS.RES_KIND_CODE, RS.BRAND_CODE,
                    RS.MODEL_CODE, RS.PROVINCE_CODE, RS.EPARCHY_CODE, RS.CITY_CODE, RS.STOCK_ID, RS.SALE_TYPE, RS.SALE_NUM;

  说明:使用动态sql绑定变量形式可以达到sql存储共享,提高执行性能,比动态拼凑好sql再执行效率高。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值