Muitas vezes nos deparamos com situações em que as ferramentas gráficas como Oracle SQL Developer, PL/SQL Developer, TOAD entre muitas outras, são uma mão na roda. O SQL*Plus (Windows) também é muito útil, mas sou fã mesmo do SQL*Plus (DOS). Por isso estou escrevendo este artigo mostrando como configurar o atalho do Prompt do DOS para oferecer suporte à acentuação para uso do SQL*Plus (linha de comando). Vocês verão que se o mesmo for utilizado sem o suporte à acentuação adequado, isso poderá trazer alguns problemas para quem estiver executando instruções SQL no banco de dados.
Fazendo uso de uma ferramenta gráfica (SQL*Plus versão Windows), foi criada conforme demonstrado na figura abaixo, uma tabela de exemplo e a mesma foi populada com duas palavras que possuem acentuação.
Agora irei iniciar uma outra sessão só que agora fazendo uso do SQL*Plus via DOS.
Microsoft Windows XP [versão 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\>chcp
Página de códigos ativa: 850
C:\>type script.sql
select * from t1 where nome='aþÒo';
Podemos perceber acima que o código de página padrão do DOS é 850 e que o mesmo não mostrou a palavra 'ação' corretamente. Em vez disso, foi mostrado os caracteres 'aþÒo'. Isto acontece porque o script em questão foi escrito utilizando o encoding Windows 1252 e não o encoding 850. Se conectarmos no banco de dados usando o SQL*Plus, veremos abaixo que os caracteres contendo acentuação também não são mostrados corretamente.
C:\>sqlplus scott/tiger
SQL*Plus: Release 10.2.0.1.0 - Production on Dom Jan 2 16:34:57 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from t1;
NOME
----------
aþÒo
colÚgio
Se executarmos o arquivo script.sql de dentro do SQL*Plus, o registro em questão será retornado.
SQL> @script.sql;
NOME
----------
aþÒo
No entanto, se em vez de executarmos o script, digitarmos a instrução SQL manualmente, poderemos ver abaixo que o registro não será retornado, pois estou querendo retornar um registro que possua a palavra 'ação', e não 'aþÒo'.
SQL> select * from t1 where nome='ação';
nÒo hß linhas selecionadas
Perceberam os problemas que poderemos ter executando instruções SQL manualmente? Alguém poderia pensar: Eu tinha certeza que existia um registro com essa palavra. Será que o mesmo foi excluído da tabela? Para evitar esse tipo de situação e habilitar o suporte à acentuação no DOS, bastará apenas realizar 2 modificações no atalho do mesmo conforme demonstrado nas figuras abaixo, ou seja, configurar o uso do código de página 1252 e configurar o uso da fonte Lucida Console:




Após as alterações acima, poderemos abrir novamente o prompt do DOS e executar o SQL*Plus:
Página de códigos ativa: 1252
C:\>type script.sql
select * from t1 where nome='ação';
C:\>sqlplus scott/tiger
SQL*Plus: Release 10.2.0.1.0 - Production on Dom Jan 2 16:44:39 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Conectado a:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> select * from t1;
NOME
----------
ação
colégio
SQL> @script.sql
NOME
----------
ação
SQL> select * from t1 where nome='ação';
NOME
----------
ação