Suporte a línguas nacionais - variáveis NLS |
A base de dados adapta-se às características específicas dos vários países no que diz repeito ao formato das datas, números, quantias monetárias e sequência de ordenação de cadeias de caracteres. Neste ponto vamos ver:
Quais as variáveis de ambiente que influenciam estes formatos?
A tabela abaixo mostra as variáveis mais importantes para alterar os formatos de datas, números, quantias monetárias e critérios de ordenação de cadeias de caracteres. Estas variáveis pertencem ao conjunto NLS - National Language Support.
As variáveis NLS estão divididas em grupos. Cada grupo tem uma variável principal, que quando recebe um valor atribui valores relacionados a todos os elementos do seu grupo. A variável NLS_LANGUAGE é principal e no seu grupo incluem-se NLS_DATE_FORMAT, NLS_DATE_LANGUAGE e NLS_SORT. A variável NLS_TERRITORY é principal e no seu grupo inclui-se NLS_CURRENCY.
A coluna INIT.ORA da tabela abaixo indica se a variável pode receber valor no ficheiro de configuração da instância (INIT.ORA). A coluna Variável de ambiente indica se a variável pode ser definida como uma variável de ambiente no sistema operativo do cliente Oracle. A coluna ALTER SESSION indica se a variável pode ser modificada usando um comando ALTER SESSION dentro de uma sessão cliente.
Nome | O que altera | Exemplo | Valor por omissão | INIT.ORA | Variável de ambiente | ALTER SESSION |
---|---|---|---|---|---|---|
NLS_LANG | Altera NLS_TERRITORY e NLS_LANGUAGE e permite definir um "character set". Quando o "character set" do servidor é diferente do utilizado pelo cliente é feita a conversão dos formatos durante a passagem de dados do cliente para o servidor | PORTUGUESE_PORTUGAL.WE8ISO8859P15 | AMERICAN_AMERICA.US7ASCII | Não | Sim | Não |
NLS_TERRITORY | Altera o formato da data, o dia em que começa a semana, o símbolo de moeda, o separador décimal e o separador dos milhares. | PORTUGAL | NLS_LANG | Sim | Não | Sim |
NLS_LANGUAGE | Altera as mensagens da base de dados (se tiverem sido instaladas nessa lingua), os nomes dos dias da semana, os nomes dos meses, os simbolos de hora e século (AM, PM, BC, AC), a sequência de ordenação de cadeias de caracteres e o valor das respostas true/false (sim/não) | PORTUGUESE | NLS_LANG | Sim | Não | Sim |
NLS_DATE_FORMAT | Altera o formato da data. | 'YYYY-MM-DD HH24:MI:SS' | NLS_LANGUAGE | Sim | Sim | Sim |
NLS_DATE_LANGUAGE | Altera a língua usada na data sem alterar os formatos de números. | PORTUGUESE | NLS_LANGUAGE | Sim | Sim | Sim |
NLS_CURRENCY | Altera o simbolo de moeda. Pode ser um ou mais caracteres. | 'EUR ' | NLS_TERRITORY | Sim | Sim | Sim |
NLS_SORT | Altera a linguística usada numa ordenação de caracteres. Não usa apenas os códigos núméricos dos caracteres mas também tem em conta os caracteres acentuados. Nem todas as linguas são suportadas. Os valores possíveis estão na vista V$NLS_VALID_VALUES | GERMANY | NLS_LANGUAGE | Sim | Sim | Sim |
Várias variáveis da tabela anterior podem estar definidas ao mesmo tempo. Se receberem valores diferentes que entram em conflito entre si, entra em vigor a tabela de prioridades apresentada abaixo:
Prioridade | Definição | Ambiente afectado |
---|---|---|
1 | Definição explicita numa função de um comando SQL | O comando que usa a função: to_char(sysdate,'Mon dd hh24:mi:ss','nls_date_language=american') |
2 | Definida por um comando ALTER SESSION | Todos os comandos executados depois do ALTER SESSION |
3 | Definida como uma variável de ambiente | Todas as sessões Oracle inciadas com essa variável activa. No caso dos ambientes Windows pode ser definida em 3 sitios: no registry, nas propriedades do sistema e numa sessão CMD (DOS) com o comando SET NOME=VALOR |
4 | Definida no ficheiro INIT.ORA | Afecta todas as sessões que se ligam à base de dados. Alguns parâmetros ficam activos imediatamente, outros requerem paragem/arranque da BD. Consultar a vista V$PARAMETER |
5 | Não definida | A BD assume LANGUAGE=AMERICAN, TERRITORY=AMERICA |
A base de dados arranca e assume as definições do ficheiro de parâmetros INIT.ORA. Por omissão assume AMERICAN_AMERICA. Definir NLS_LANG numa variável de ambiente sobrepõe-se às definições na instância, condicionando as sessões criadas com essa variável definida. Um comando ALTER SESSION sobrepõe-se ao NLS_LANG e à definição na instância. Uma definição numa função SQL sobrepõe-se a tudo o que tenha sido definido anteriormente.
A vista V$NLS_VALID_VALUES contem os valores disponíveis para as variáveis NLS. O manual "Oracle National Language Support Guide" dedica-se apenas a este tema.
Como ver os valores das variáveis NLS?
Nos exemplos abaixo vamos ver como estão definidos os parâmetros NLS nos vários níveis.
Parâmetros NLS na base de dados:
prompt Parametros NLS na base de dados; select * from NLS_DATABASE_PARAMETERS; |
Parametros NLS na base de dados PARAMETER VALUE ------------------------------ ---------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_CURRENCY $ NLS_ISO_CURRENCY AMERICA NLS_NUMERIC_CHARACTERS ., NLS_CHARACTERSET WE8MSWIN1252 NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT DD-MON-RR NLS_DATE_LANGUAGE AMERICAN NLS_SORT BINARY NLS_TIME_FORMAT HH.MI.SSXFF AM NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR NLS_DUAL_CURRENCY $ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE NLS_NCHAR_CHARACTERSET AL16UTF16 NLS_RDBMS_VERSION 10.2.0.1.0 20 rows selected |
Parâmetros NLS na instância:
prompt Parametros NLS na instância; select * from NLS_INSTANCE_PARAMETERS; |
Parametros NLS na instância PARAMETER VALUE ------------------------------ ---------------------------------------- NLS_LANGUAGE AMERICAN NLS_TERRITORY AMERICA NLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY NLS_NUMERIC_CHARACTERS NLS_ISO_CURRENCY NLS_CALENDAR NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 rows selected |
Parametros NLS na sessão cliente depois de alter session:
prompt Parametros NLS na sessão cliente depois de alter session; alter session set nls_territory=portugal; alter session set nls_language=portuguese; select * from NLS_SESSION_PARAMETERS; |
Parametros NLS na sessão cliente depois de alter session alter session set succeeded. alter session set succeeded. PARAMETER VALUE ------------------------------ ---------------------------------------- NLS_LANGUAGE PORTUGUESE NLS_TERRITORY PORTUGAL NLS_CURRENCY ¿ NLS_ISO_CURRENCY PORTUGAL NLS_NUMERIC_CHARACTERS ,. NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT RR.MM.DD NLS_DATE_LANGUAGE PORTUGUESE NLS_SORT WEST_EUROPEAN NLS_TIME_FORMAT HH24:MI:SSXFF NLS_TIMESTAMP_FORMAT RR.MM.DD HH24:MI:SSXFF NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR NLS_TIMESTAMP_TZ_FORMAT RR.MM.DD HH24:MI:SSXFF TZR NLS_DUAL_CURRENCY ¿ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 rows selected |
Como alterar o formato dos números e o símbolo de moeda?
O formato de números e o símbolo de moeda podem ser alterados usando as variáveis NLS e/ou usando a função TO_CHAR com uma máscara. Para saber mais da função TO_CHAR siga este link. O exemplo abaixo mostra como as variáveis NLS_TERRITORY e NLS_LANGUAGE influenciam estes formatos:
prompt nls_territory=america alter session set nls_territory=america; select to_char(12345.6789,'099G999G999D99L') from dual; prompt nls_territory=france alter session set nls_territory=france; select to_char(12345.6789,'099G999G999D99L') from dual; prompt nls_territory=portugal alter session set nls_territory=portugal; select to_char(12345.6789,'099G999G999D99L') from dual; |
nls_territory=america alter session set succeeded. TO_CHAR(12345.6789,'099G999G999D99L') ------------------------------------- 000,012,345.68$ 1 rows selected nls_territory=france alter session set succeeded. TO_CHAR(12345.6789,'099G999G999D99L') ------------------------------------- 000 012 345,68¿ 1 rows selected nls_territory=portugal alter session set succeeded. TO_CHAR(12345.6789,'099G999G999D99L') ------------------------------------- 000.012.345,68¿ 1 rows selected |
O comando abaixo deveria listar os salários dos empregados seguindo a convenção portuguesa para o formato de quantias monetárias, pois novamente estamos a usar uma máscara com os símbolos L, G e D
alter session set nls_territory='PORTUGAL'; alter session set nls_language='PORTUGUESE'; select to_char(sal,'999G999D99L') from emp; |
alter session set succeeded. alter session set succeeded. TO_CHAR(SAL,'999G999D99L') -------------------------- 800,00¿ 1.600,00¿ 1.250,00¿ 2.975,00¿ 1.250,00¿ 2.850,00¿ 2.450,00¿ 3.000,00¿ 5.000,00¿ 1.500,00¿ 1.100,00¿ 950,00¿ 3.000,00¿ 1.300,00¿ 14 rows selected |
alter session set nls_territory='PORTUGAL'; alter session set nls_language='PORTUGUESE'; alter session set nls_currency=' EUR'; select * from NLS_SESSION_PARAMETERS; select to_char(sal,'999G999D99L') from emp; |
alter session set succeeded. alter session set succeeded. alter session set succeeded. PARAMETER VALUE ------------------------------ ---------------------------------------- NLS_LANGUAGE PORTUGUESE NLS_TERRITORY PORTUGAL NLS_CURRENCY EUR NLS_ISO_CURRENCY PORTUGAL NLS_NUMERIC_CHARACTERS ,. NLS_CALENDAR GREGORIAN NLS_DATE_FORMAT RR.MM.DD NLS_DATE_LANGUAGE PORTUGUESE NLS_SORT WEST_EUROPEAN NLS_TIME_FORMAT HH24:MI:SSXFF NLS_TIMESTAMP_FORMAT RR.MM.DD HH24:MI:SSXFF NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR NLS_TIMESTAMP_TZ_FORMAT RR.MM.DD HH24:MI:SSXFF TZR NLS_DUAL_CURRENCY ¿ NLS_COMP BINARY NLS_LENGTH_SEMANTICS BYTE NLS_NCHAR_CONV_EXCP FALSE 17 rows selected TO_CHAR(SAL,'999G999D99L') -------------------------- 800,00 EUR 1.600,00 EUR 1.250,00 EUR 2.975,00 EUR 1.250,00 EUR 2.850,00 EUR 2.450,00 EUR 3.000,00 EUR 5.000,00 EUR 1.500,00 EUR 1.100,00 EUR 950,00 EUR 3.000,00 EUR 1.300,00 EUR 14 rows selected |
O mesmo resultado pode ser obtido usando uma parametrização ao nível da funçao SQL, como mostra o comando abaixo:
alter session set nls_territory='PORTUGAL'; alter session set nls_language='PORTUGUESE'; select to_char(sal,'999G999D99L') from emp; select to_char(sal,'999G999D99L','nls_currency='' EUR''') from emp; |
alter session set succeeded. alter session set succeeded. TO_CHAR(SAL,'999G999D99L') -------------------------- 800,00¿ 1.600,00¿ 1.250,00¿ 2.975,00¿ 1.250,00¿ 2.850,00¿ 2.450,00¿ 3.000,00¿ 5.000,00¿ 1.500,00¿ 1.100,00¿ 950,00¿ 3.000,00¿ 1.300,00¿ 14 rows selected TO_CHAR(SAL,'999G999D99L','NLS_CURRENCY=''EUR''') ------------------------------------------------- 800,00 EUR 1.600,00 EUR 1.250,00 EUR 2.975,00 EUR 1.250,00 EUR 2.850,00 EUR 2.450,00 EUR 3.000,00 EUR 5.000,00 EUR 1.500,00 EUR 1.100,00 EUR 950,00 EUR 3.000,00 EUR 1.300,00 EUR 14 rows selected |
Como alterar os formatos das datas?
O formato usado para as datas é influenciado por NLS_TERRITORY e NLS_LANGUAGE, como mostra o próximo exemplo:
prompt Territory=AMERICA, Language=AMERICAN alter session set nls_territory='AMERICA'; alter session set nls_language='AMERICAN'; select hiredate, to_char(hiredate,'yyyy-mm-dd'), to_char(hiredate,'yyyy-MON-dd, Day'), to_char(hiredate,'Day, dd "," Month "," YYYY') from emp; prompt Territory=FRANCE, Language=FRENCH alter session set nls_territory='FRANCE'; alter session set nls_language='FRENCH'; select hiredate, to_char(hiredate,'yyyy-mm-dd'), to_char(hiredate,'yyyy-MON-dd, Day'), to_char(hiredate,'Day, dd "," Month "," YYYY') from emp; prompt Territory=Portugal, Language=Portuguese alter session set nls_territory='PORTUGAL'; alter session set nls_language='PORTUGUESE'; select hiredate, to_char(hiredate,'yyyy-mm-dd'), to_char(hiredate,'yyyy-MON-dd, Day'), to_char(hiredate,'Day, dd "de" Month "de" YYYY') from emp; |
Territory=AMERICA, Language=AMERICAN alter session set succeeded. alter session set succeeded. HIREDATE TO_CHAR(HIREDATE,'YYYY-MM-DD') TO_CHAR(HIREDATE,'YYYY-MON-DD,DAY') TO_CHAR(HIREDATE,'DAY,DD","MONTH","YYYY') ------------------------- ------------------------------ ----------------------------------- ----------------------------------------- 17-DEC-80 1980-12-17 1980-DEC-17, Wednesday Wednesday, 17 , December , 1980 20-FEB-81 1981-02-20 1981-FEB-20, Friday Friday , 20 , February , 1981 22-FEB-81 1981-02-22 1981-FEB-22, Sunday Sunday , 22 , February , 1981 02-APR-81 1981-04-02 1981-APR-02, Thursday Thursday , 02 , April , 1981 28-SEP-81 1981-09-28 1981-SEP-28, Monday Monday , 28 , September , 1981 01-MAY-81 1981-05-01 1981-MAY-01, Friday Friday , 01 , May , 1981 09-JUN-81 1981-06-09 1981-JUN-09, Tuesday Tuesday , 09 , June , 1981 09-DEC-82 1982-12-09 1982-DEC-09, Thursday Thursday , 09 , December , 1982 17-NOV-81 1981-11-17 1981-NOV-17, Tuesday Tuesday , 17 , November , 1981 08-SEP-81 1981-09-08 1981-SEP-08, Tuesday Tuesday , 08 , September , 1981 12-JAN-83 1983-01-12 1983-JAN-12, Wednesday Wednesday, 12 , January , 1983 03-DEC-81 1981-12-03 1981-DEC-03, Thursday Thursday , 03 , December , 1981 03-DEC-81 1981-12-03 1981-DEC-03, Thursday Thursday , 03 , December , 1981 23-JAN-82 1982-01-23 1982-JAN-23, Saturday Saturday , 23 , January , 1982 14 rows selected Territory=FRANCE, Language=FRENCH alter session set succeeded. alter session set succeeded. HIREDATE TO_CHAR(HIREDATE,'YYYY-MM-DD') TO_CHAR(HIREDATE,'YYYY-MON-DD,DAY') TO_CHAR(HIREDATE,'DAY,DD","MONTH","YYYY') ------------------------- ------------------------------ ----------------------------------- ----------------------------------------- 17/12/80 1980-12-17 1980-DÉC. -17, Mercredi Mercredi, 17 , Décembre , 1980 20/02/81 1981-02-20 1981-FÉVR.-20, Vendredi Vendredi, 20 , Février , 1981 22/02/81 1981-02-22 1981-FÉVR.-22, Dimanche Dimanche, 22 , Février , 1981 02/04/81 1981-04-02 1981-AVR. -02, Jeudi Jeudi , 02 , Avril , 1981 28/09/81 1981-09-28 1981-SEPT.-28, Lundi Lundi , 28 , Septembre , 1981 01/05/81 1981-05-01 1981-MAI -01, Vendredi Vendredi, 01 , Mai , 1981 09/06/81 1981-06-09 1981-JUIN -09, Mardi Mardi , 09 , Juin , 1981 09/12/82 1982-12-09 1982-DÉC. -09, Jeudi Jeudi , 09 , Décembre , 1982 17/11/81 1981-11-17 1981-NOV. -17, Mardi Mardi , 17 , Novembre , 1981 08/09/81 1981-09-08 1981-SEPT.-08, Mardi Mardi , 08 , Septembre , 1981 12/01/83 1983-01-12 1983-JANV.-12, Mercredi Mercredi, 12 , Janvier , 1983 03/12/81 1981-12-03 1981-DÉC. -03, Jeudi Jeudi , 03 , Décembre , 1981 03/12/81 1981-12-03 1981-DÉC. -03, Jeudi Jeudi , 03 , Décembre , 1981 23/01/82 1982-01-23 1982-JANV.-23, Samedi Samedi , 23 , Janvier , 1982 14 rows selected Territory=Portugal, Language=Portuguese alter session set succeeded. alter session set succeeded. HIREDATE TO_CHAR(HIREDATE,'YYYY-MM-DD') TO_CHAR(HIREDATE,'YYYY-MON-DD,DAY') TO_CHAR(HIREDATE,'DAY,DD"DE"MONTH"DE"YYYY') ------------------------- ------------------------------ ----------------------------------- ------------------------------------------- 80.12.17 1980-12-17 1980-DEZ-17, Quarta-Feira Quarta-Feira , 17 de Dezembro de 1980 81.02.20 1981-02-20 1981-FEV-20, Sexta-Feira Sexta-Feira , 20 de Fevereiro de 1981 81.02.22 1981-02-22 1981-FEV-22, Domingo Domingo , 22 de Fevereiro de 1981 81.04.02 1981-04-02 1981-ABR-02, Quinta-Feira Quinta-Feira , 02 de Abril de 1981 81.09.28 1981-09-28 1981-SET-28, Segunda-Feira Segunda-Feira, 28 de Setembro de 1981 81.05.01 1981-05-01 1981-MAI-01, Sexta-Feira Sexta-Feira , 01 de Maio de 1981 81.06.09 1981-06-09 1981-JUN-09, Terça-Feira Terça-Feira , 09 de Junho de 1981 82.12.09 1982-12-09 1982-DEZ-09, Quinta-Feira Quinta-Feira , 09 de Dezembro de 1982 81.11.17 1981-11-17 1981-NOV-17, Terça-Feira Terça-Feira , 17 de Novembro de 1981 81.09.08 1981-09-08 1981-SET-08, Terça-Feira Terça-Feira , 08 de Setembro de 1981 83.01.12 1983-01-12 1983-JAN-12, Quarta-Feira Quarta-Feira , 12 de Janeiro de 1983 81.12.03 1981-12-03 1981-DEZ-03, Quinta-Feira Quinta-Feira , 03 de Dezembro de 1981 81.12.03 1981-12-03 1981-DEZ-03, Quinta-Feira Quinta-Feira , 03 de Dezembro de 1981 82.01.23 1982-01-23 1982-JAN-23, Sábado Sábado , 23 de Janeiro de 1982 14 rows selected |
Algumas funções Oracle permitem a recepção de parâmetros NLS para formatar o resultado. No exemplo abaixo, embora NLS_LANGUAGE receba o valor AMERICAN e NLS_TERRITORY o valor AMERICA a data aparece no formato Português, graças ao parâmetro usado na função.
prompt NLS_LANGUAGE=AMERICAN, NLS_TERRITORY=AMERICA alter session set nls_language=american; alter session set nls_territory=america; select to_char(hiredate, 'YYYY-Mon-DD'), to_char(hiredate, 'YYYY-Mon-DD', 'nls_date_language=PORTUGUESE') from emp; |
NLS_LANGUAGE=AMERICAN, NLS_TERRITORY=AMERICA alter session set succeeded. alter session set succeeded. TO_CHAR(HIREDATE,'YYYY-MON-DD') TO_CHAR(HIREDATE,'YYYY-MON-DD','NLS_DATE_LANGUAGE=PORTUGUESE') ------------------------------- -------------------------------------------------------------- 1980-Dec-17 1980-Dez-17 1981-Feb-20 1981-Fev-20 1981-Feb-22 1981-Fev-22 1981-Apr-02 1981-Abr-02 1981-Sep-28 1981-Set-28 1981-May-01 1981-Mai-01 1981-Jun-09 1981-Jun-09 1982-Dec-09 1982-Dez-09 1981-Nov-17 1981-Nov-17 1981-Sep-08 1981-Set-08 1983-Jan-12 1983-Jan-12 1981-Dec-03 1981-Dez-03 1981-Dec-03 1981-Dez-03 1982-Jan-23 1982-Jan-23 14 rows selected |
Como alterar a sequência de ordenação das cadeias de caracteres?
A sequência de ordenação das cadeias de caracteres é influenciada pelo valor da variável NLS_LANGUAGE, como mostra o exemplo abaixo:
drop table teste_sort; create table teste_sort (nome varchar2(30)); insert into teste_sort values ('José'); insert into teste_sort values ('josé'); insert into teste_sort values ('JOSÉ'); insert into teste_sort values ('JOSE'); insert into teste_sort values ('JOAO'); insert into teste_sort values ('JOÃO'); insert into teste_sort values ('João'); insert into teste_sort values ('Joao'); |
drop table teste_sort succeeded. create table succeeded. 1 rows inserted 1 rows inserted 1 rows inserted 1 rows inserted 1 rows inserted 1 rows inserted 1 rows inserted 1 rows inserted |
prompt NLS_LANGUAGE=AMERICAN alter session set nls_language=american; select * from teste_sort order by nome; |
NLS_LANGUAGE=AMERICAN alter session set succeeded. NOME ------------------------------ JOAO JOSE JOSÉ JOÃO Joao José João josé 8 rows selected |
prompt NLS_LANGUAGE=PORTUGUESE alter session set nls_language=portuguese; select * from teste_sort order by nome; |
NLS_LANGUAGE=PORTUGUESE alter session set succeeded. NOME ------------------------------ JOAO JOÃO Joao João JOSE JOSÉ José josé 8 rows selected |
A variável NLS_SORT define a sequência de ordenação e o seu valor depende da atribuição inicial dada a NLS_LANGUAGE. A utilização desta variável permite variar a sequência de ordenação sem modificar os outros parâmetros incluídos no grupo NLS_LANGUAGE. A vista V$NLS_VALID_VALUES contem os valores possíveis de NLS_SORT. No exemplo abaixo atribuímos a NLS_LANGUAGE o valor PORTUGUESE e depois disso fazemos duas ordenações: a primeira segue um critério binário, enquanto a segunda segue WEST_EUROPEAN (adequada para Portugal).
prompt NLS_LANGUAGE=PORTUGUESE alter session set nls_language=portuguese; prompt NLS_SORT=BINARY alter session set nls_sort=binary; select * from teste_sort order by nome; prompt NLS_SORT=WEST_EUROPEAN alter session set nls_sort=west_european; select * from teste_sort order by nome; |
NLS_LANGUAGE=PORTUGUESE alter session set succeeded. NLS_SORT=BINARY alter session set succeeded. NOME ------------------------------ JOAO JOSE JOSÉ JOÃO Joao José João josé 8 rows selected NLS_SORT=WEST_EUROPEAN alter session set succeeded. NOME ------------------------------ JOAO JOÃO Joao João JOSE JOSÉ José josé 8 rows selected |
Realizado por Turtle Learning ®. Última alteração em 2011-02-26