按字段名从 Firebird 游标中获取值

Get value from Firebird cursor by field name

我需要通过字段名从游标中获取数据,存储在 var 中。例如,我有语句:

for select CUBE1, CUBE2, CUBE3, ....., CUBE31
    from GET_DATA(......) B
    where ..... as cursor cvol do

现在我需要通过动态更改的名称从游标中获取值

s = 'cube' || extract(day from on_date);
vol = cvol.:s --????

我正在使用 Firebird 3。

无法通过名称动态获取列。您要使用的名称必须在编译时已知。您可以做的最好的事情是使用 simple case:

根据月份中的日期按名称获取值
vol = case extract(day from on_date)
  when 1 then cvol.cube1
  when 2 then cvol.cube2
  -- .. and so on
  when 31 then cvol.cube31
end