Na SQL Commands
seção do aplicativo Oracle Apex
, quando executo o comando a seguir, ele apenas retorna o sysdate
nome da função, em vez da data atual. Por quê?
SELECT sysdate from dual;
OR
SELECT sysdate from sys.dual;
Saída : sysdate
Na SQL Commands
seção do aplicativo Oracle Apex
, quando executo o comando a seguir, ele apenas retorna o sysdate
nome da função, em vez da data atual. Por quê?
SELECT sysdate from dual;
OR
SELECT sysdate from sys.dual;
Saída : sysdate
Tentar:
1. Usando um alias
O Oracle APEX pode estar exibindo o nome da função em vez de executá-la.
SELECT sysdate AS current_date FROM dual;
2. Certifique-se de que você está no esquema correto
A seção de comandos SQL do Oracle APEX executa as consultas no esquema que é atribuído ao seu workspace. Se DUAL estiver faltando ou inacessível, tente:
SELECT sysdate FROM SYS.DUAL;
Se isso ainda não funcionar, certifique-se de que seu esquema tenha acesso ao DUAL.
3. Usando a função TO_CHAR
Se o APEX estiver formatando a saída incorretamente, convertê-la explicitamente para um formato de string pode funcionar:
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD HH24:MI:SS') AS current_date FROM dual;
Em resposta aos comentários:
Execute as seguintes consultas:
SELECT * FROM dual;
ou
SELECT * FROM sys.dual;
Se você receber um erro como "tabela ou exibição não existe", então você não tem acesso ao DUAL.
Você também pode verificar seus privilégios de usuário
Execute isto:
SELECT * FROM all_tables WHERE table_name = 'DUAL';
Se nenhuma linha for retornada, talvez você não tenha o acesso necessário.
Verifique se DUAL existe ou não no seu esquema
Execute isto:
SELECT owner, table_name FROM all_tables WHERE table_name = 'DUAL';
Isso mostrará qual esquema possui a tabela DUAL
Não tenho certeza de como você fez isso, mas isso funciona muito bem para mim. Eu executei a seguinte declaração:
e eu obtenho saídas esperadas idênticas tanto no APEX SQL Workshop (apex.oracle.com) quanto no sqlcl (meu próprio 19c db). A única maneira de obter a string
sysdate
como saída é citá-la como mostrado.Você aceitou a resposta, mas não vi o que você descobriu - qual foi o motivo?
Eu estava pensando: talvez você devesse ter movido a linha separadora (entre o editor e o painel de resultados) "para cima", o que realmente revelaria o resultado da consulta? Assim:
Foi esse o caso, talvez?
Para responder ao comentário de @PaulW sobre deletar uma linha da tabela DUAL: um usuário comum não pode fazer isso, mas SYS certamente pode. No entanto, não acho que @nam tenha feito isso.