ABAP--如何通过Oracle游标直接操作Oracle的系统表

在ABAP编程中,有时候需要利用Native SQL操作数据库表(自定义和非业务数据的表,业务数据表我的建议还是应该通过SAP提供的类、函数,BAPI等技术操作)。下面的例子是通过游标操作Oracle的系统表的代码,供大家参考。

*---------------------------------------------------------------------*
* Read information about partitions of a table
*---------------------------------------------------------------------*
FORM get_partition_info
  USING
    i_tablnm        TYPE rsd_tablnm
  CHANGING
    e_ts_part_info  TYPE rsdu_ts_part_info.

  DATA:
    l_s_part_info   TYPE rsdu_s_part_info.

* this works only for Oracle
  CHECK sy-dbsys = 'ORACLE'.

  EXEC SQL.
    open csr for
      select partition_name, high_value
      from user_tab_partitions
      where table_name = :i_tablnm
  ENDEXEC.

  DO.
    EXEC SQL.
      fetch next csr into :l_s_part_info-partition_name,
                          :l_s_part_info-high_value
    ENDEXEC.

    IF sy-subrc <> 0.
      EXIT.
    ENDIF.

*   Special treatment of upper limit (highvalue) in Oracle
    IF l_s_part_info-high_value EQ 'MAXVALUE'.
      l_s_part_info-high_value = rsdu_c_max_value.
    ENDIF.

    INSERT l_s_part_info INTO TABLE e_ts_part_info.
  ENDDO.

  EXEC SQL.
    close csr
  ENDEXEC.

ENDFORM.                               " GET_PARTITION_INFO

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值