如何通过 ADBC native SQL 获取行数?

How to get the row count via ADBC native SQL?

我可以使用 Open SQL 进行以下查询:

select count(*) into lv_count
from prcd_elements client specified 
where waerk = 'USD'

如何使用本机 ABAP 数据库连接 (ADBC) 执行相同的操作 SQL?

我尝试了以下方法,但它给了我一个例外...我不确定 lt_table 需要什么数据类型来保存计数,class CL_SQL_RESULT_SET(由 execute_query 返回)似乎需要本地 table.

data lt_table type standard table of prcd_elements.

data(lo_sql) = new cl_sql_statement( ).
data(lo_result) = lo_sql->execute_query(
  |select count(*) from prcd_elements where waerk = 'USD'|
).
lo_result->set_param_table( REF #( lt_table ) ).
lo_result->next_package( ).
lo_result->close( ).

谢谢!

在一些神秘恩人的帮助下,我弄明白了这一点。我需要创建一个内部 table,其中包含一个类型为 I(整数)的列,然后从该内部 table.

中提取计数
types:
  begin of s_count,
    count type i,
  end of s_count.

data lt_table type standard table of s_count.

data(lo_sql) = new cl_sql_statement( ).
data(lo_result) = lo_sql->execute_query(
  |select count(*) from prcd_elements where waerk = 'USD'|
).
lo_result->set_param_table( REF #( lt_table ) ).
lo_result->next_package( ).
lo_result->close( ).

data(lv_count) = lt_table[ 1 ]-count.

您也可以使用变量而不是内部变量 table;

data lv_count type i.

data(lo_sql) = new cl_sql_statement( ).
lo_sql->execute_query(select count(*) into :lv_count from prcd_elements where waerk = 'USD').