Uma dica geral primeiro:Emita sua variável
l_sql
para seu console usando dbms_output.put_line
ou use algum tipo de tabela de depuração onde você possa inseri-lo. Também tenha cuidado com o tipo de dados dessa variável. Se você precisa expandir o SQL, pode chegar a um ponto em que precisa usar um CLOB
variável em vez de varchar2
. Você precisará fornecer estruturas de tabela e dados de teste se quiser que seu problema seja analisado completamente, portanto, inicialmente, darei algumas explicações gerais:
Use Generic Column Names
tudo bem se você tiver uma quantidade permanente e imutável de colunas. Mas se a ordem de suas colunas ou mesmo o valor puder mudar, isso é uma má ideia, pois sua página mostrará um erro se sua consulta resultar em mais colunas do que Generic Column Count
Opção 1:use aliases de coluna em sua consulta
Aprimore seu
PL/SQL Function Body returning SQL Query
de uma forma que produza nomes de exibição detalhados, como este:return 'select 1 as "Your verbose column name", 2 as "Column #2", 3 as "Column #3" from dual';
Isso se parece com isso:
Tem a desvantagem de que os nomes das colunas também aparecem dessa forma no designer e o APEX só atualizará esses nomes de colunas se você revalidar a função. Você terá dificuldade em referenciar uma coluna com o nome interno de
Your verbose column name
em um código de processo ou ação dinâmica. No entanto, ainda funciona, mesmo se você alterar os nomes das colunas sem informar ao APEX, por exemplo, externalizando o
PL/SQL Function Body
em uma função real. Opção 2:use títulos de coluna personalizados
Um pouco escondido, mas também há a opção de cabeçalhos de coluna totalmente personalizados. Está quase no final dos atributos página da região do seu relatório.
Aqui você também pode fornecer uma função que retorna os nomes das colunas. Tenha cuidado para que esta função não retorne uma consulta SQL que retorne nomes de colunas, mas sim nomes de colunas separados por um dois pontos .
Com esse método, é mais fácil identificar e referenciar suas colunas no designer:
Opção 3:ambos
Desative os nomes de coluna genéricos, deixe sua consulta retornar nomes de coluna que podem ser facilmente identificados e referenciados e use os
custom column headings
função retornar nomes detalhados para seus usuários. Minha opinião pessoal
Estou usando a 3ª opção em um aplicativo de produção onde as pessoas podem alterar a quantidade e a ordem das colunas usando itens de transporte na página do relatório. Levou algum tempo, mas agora funciona como um encanto, como algum
PIVOT
dinâmico sem PIVOT
.