Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Existe uma maneira de exibir colunas dinâmicas no Oracle apex


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 .