Por John Dixon - Blog CLOUDNUEVA
Neste post, o autor revisa um série de exemplos das APIs PL/SQL APEX_STRING e APEX_STRING_UTIL.
apex_string.get_initials
Esta API permite extrair iniciais de uma determinada string. Isso pode ser útil ao exibir um nome de usuário abreviado em um ícone de avatar ou janela de bate-papo.
SELECT apex_string.get_initials(p_str => 'John Doe', p_cnt => 2) initials
FROM dual UNION ALL
SELECT apex_string.get_initials(p_str => 'John doe', p_cnt => 3) initials
FROM dual UNION ALL
SELECT apex_string.get_initials(p_str => 'John Frank Doe', p_cnt => 2) initials
FROM dual UNION ALL
SELECT apex_string.get_initials(p_str => 'John Frank Doe', p_cnt => 3) initials
FROM dual;
INITIALS
JD
JD
JF
JFD
apex_string_util.to_display_filesize
Esta API exibe um tamanho de arquivo legível pelo usuário. Ele altera dinamicamente a unidade de medida (GB, MB, KB, etc.) com base no número de bytes fornecidos. Isso é útil ao exibir uma lista de arquivos do SharePoint e seus tamanhos.
SELECT apex_string_util.to_display_filesize(p_size_in_bytes => 1312312312) file_size_dsp
FROM dual UNION ALL
SELECT apex_string_util.to_display_filesize(p_size_in_bytes => 13123123) file_size_dsp
FROM dual UNION ALL
SELECT apex_string_util.to_display_filesize(p_size_in_bytes => 131231) file_size_dsp
FROM dual UNION ALL
SELECT apex_string_util.to_display_filesize(p_size_in_bytes => 1312) file_size_dsp
FROM dual;
FILE_SIZE_DSP
1.2GB
12.5MB
128.2KB
1,312 bytes
apex_string_util.get_domain
Esta API retorna a parte do domínio de um endereço de e-mail ou URL. Eu usei isso ao implementar o Social Sign-on com o Office 365. Eu o uso para determinar se o usuário conectado tem um endereço de email em uma lista de domínios de email com permissão para usar um aplicativo.
SELECT apex_string_util.get_domain (p_string => 'jon@cloudnueva.com') domain_name
FROM dual UNION ALL
SELECT apex_string_util.get_domain (p_string => 'https://www.cloudnueva.com/djddjdhjdhd') domain_name
FROM dual;
DOMAIN_NAME
cloudnueva.com
cloudnueva.com
apex_string.formato
Eu uso essa API principalmente para formatar mensagens de log. Isso me permite escrever a mensagem em inglês simples e injetar variáveis na mensagem. Acho isso mais fácil de ler (e manter) do que concatenar valores.
BEGIN
dbms_output.put_line (apex_string.format('Customer Number [%s], is invalid. Message [%s]',
'2226S', 'Customer Disabled'));
-- The code below produces the same result but I find
-- the above code easier to read and maintain.
dbms_output.put_line ('Customer Number [' || '2226S' ||
'], is invalid. Message [' || 'Customer Disabled' ||']');
END;
/
Customer Number [2226S], is invalid. Message [Customer Disabled]
Customer Number [2226S], is invalid. Message [Customer Disabled]
apex_string.split
Mais: split_numbers e split_clobs
Esta API é o pão com manteiga dos desenvolvedores APEX. É benéfico ao implementar APEX Popup LOV ou Combo Boxes (novo no APEX 23.2) que permitem seleção múltipla. Eles permitem que você pegue uma string delimitada e transforme-a em uma tabela.
Por exemplo, podemos pegar a seguinte lista de IDs de itens retornados de uma LOV Popup: 233:528:971:1868:2232:3067:4656
e transformá-los em uma tabela da seguinte forma:
SELECT column_value
FROM TABLE(apex_string.split_numbers(p_str => '233:528:971:1868:2232:3067:4656',
p_sep => ':'));
COLUMN_VALUE
233
528
971
1868
2232
3067
4656
Isso nos permite usar a lista em nosso SQL assim:
SELECT *
FROM mdm_items
WHERE item_id MEMBER OF
(SELECT apex_string.split_numbers(p_str => :P10_ITEM_IDS,
p_sep => ':') FROM dual);
apex_string_util.find...
A série de APIs 'find' ajuda você a encontrar objetos específicos dentro de uma string.
Por exemplo, eu uso apex_string_util.find_links
para encontrar URLs em um campo APEX Rich Text. Isso pode ser útil se você precisar verificar os links inseridos por um usuário em um campo Rich Text antes de permitir que ele seja salvo.
SELECT column_value
FROM apex_string_util.find_links
(p_string => '<p>Click <a href="https://www.google.com">here</a> or Click <a href="https://www.abc.com">here</a></p>');
COLUMN_VALUE
https://www.google.com
https://www.abc.com
Da mesma forma, apex_string_util.find_email_addresses
extrai uma matriz de endereços de e-mail de uma string:
SELECT column_value
FROM apex_string_util.find_email_addresses
(p_string => 'Email Jon at jon@cloudnueva.com and Bill at bill@abc.com tomorrow.');
COLUMN_VALUE
jon@cloudnueva.com
bill@abc.com
Finalmente, apex_string_util.find_tags extrai uma lista de Tags de uma string:
SELECT column_value
FROM apex_string_util.find_tags (p_string => 'We love #orclAPEX# and #orclORDS!',
p_prefix => '#');
COLUMN_VALUE
#ORCLAPEX
#ORCLORDS
apex_string.push
Esta API permite manter uma matriz simples de valores. Isso pode ser útil se você precisar capturar valores durante um processo PL/SQL de longa execução para poder retornar a eles mais tarde. Forneci um exemplo detalhado em uma postagem anterior Trabalhando com Arrays em APEX e PL/SQL .
apex_string.plist...
A plist
série de APIs permite manter pares de valores-chave em um array PL/SQL. Também forneci um exemplo detalhado dessa API no post anterior, Trabalhando com Arrays em APEX e PL/SQL .
apex_string_util.get_slug
Esta API remove espaços, pontuação e caracteres especiais de uma string. Ele retorna no máximo 255 caracteres. Um Slug é a parte de identificação exclusiva de um endereço da web, normalmente no final do URL. Também usei essa API para gerar uma string exclusiva com base em uma string de entrada.
select apex_string_util.get_slug (p_string => 'Jon Dixon', p_hash_length => 10) from dual
union all
select apex_string_util.get_slug (p_string => 'Jon Dixon', p_hash_length => 10) from dual
union all
select apex_string_util.get_slug (p_string => 'This is a sentence. Some random characters ~!@#$%^&*()-=') from dual;
COLUMN_VALUE
jon-dixon-0168304377
jon-dixon-2968790994
this-is-a-sentence-some-random-characters
apex_string_util.replace_whitespace
Finalmente, a API apex_string_util.replace_whitespace permite remover espaços em branco de uma string e substituí-la por outro caractere. Nota: esta API não remove todos os caracteres especiais da string original.
select apex_string_util.replace_whitespace
(p_string => 'This is a sentence. Some random characters ~!@#$%^&*()-=',
p_whitespace_character => '+') from dual;
REPLACED_WHITESPACE
+this+is+a+sentence+some+random+characters+~+@+$%^&*+=+
Conclusão
Vale sempre a pena lembrar das APIs (PL/SQL e JavaScript) que o APEX tem a oferecer. Mesmo que sejam necessárias apenas dez linhas de código para escrever uma função utilitária, é melhor usar uma função APEX e deixar a equipe de desenvolvimento do APEX se preocupar em mantê-la e aprimorá-la.
.
Nenhum comentário:
Postar um comentário