Amigos,
Criei uma função para realizar a conversão de Data Juliana para data normal.
A função atende plenamente meus objetivos, porém, apenas eu consigo utiliza-la - existem outros analistas que desejariam ter acesso a mesma, mas quando fazem referencia em uma instrução SQL, o Oracle retorna a mensagem de Identificador Inválido.
O que deve ser feito para que outros usuários possuam acesso a mesma?
Permitir acesso a Função criada em PL/SQL
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você tem que dar permissão para os outros usuários poderem acessar sua function.
Entre no usuário que você criou sua função e rode o seguinte comando:
Caso você quer dar o privilégio pra apenas uma pessoa, faça assim:
Seria isso?
Entre no usuário que você criou sua função e rode o seguinte comando:
grant execute on fnc_sua_funcao to public;
grant execute on fnc_sua_funcao to joao;
-
- Rank: Estagiário Júnior
- Mensagens: 2
- Registrado em: Qua, 14 Dez 2005 10:56 am
- Localização: PIRACICABA - SP
Dr_gori, boa tarde.
Realmente o que eu necessito é dar um GRANT em minha função.
Já havia realizado este teste e a resposta que tenho quando entro em outra sessão (outro usuário) é:
ORA-00904: "TO_JULIANA": invalid identifier
para que você consiga visualizar melhor o que está ocorrendo, segue a função que eu estou utilizando:
Estou utilizando como interpretador SQL o SQLTools e estou utilizando dois Schemas (usuários) com as mesmas permissões no banco de dados - em um eu realizo a criação e a função funciona corretamente e no outro encontro problemas para utilizar a função.
O que pode estar ocorrendo?
Realmente o que eu necessito é dar um GRANT em minha função.
Já havia realizado este teste e a resposta que tenho quando entro em outra sessão (outro usuário) é:
ORA-00904: "TO_JULIANA": invalid identifier
para que você consiga visualizar melhor o que está ocorrendo, segue a função que eu estou utilizando:
CREATE OR REPLACE Function to_juliana (dt_a_converter DATE )
RETURN NUMBER IS
dt_juliana NUMBER;
BEGIN
/* Inicio do Calculo de conversão para Data Juliana */
dt_juliana := 0;
dt_juliana := To_Char( TO_DATE( dt_a_converter ) , 'YYYYDDD') - 1900000 ;
/* atribuímos o retorno da função */
RETURN( dt_juliana );
END To_Juliana;
/
GRANT EXECUTE ON to_juliana TO PUBLIC;
O que pode estar ocorrendo?
-
- Rank: Estagiário Sênior
- Mensagens: 11
- Registrado em: Qui, 16 Jun 2005 7:59 am
- Localização: Sapiranga - RS
Ola...
Provavelmente você deve adicionar o nome do seu usuario antes do nome da sua function quando estiver em outro usuario e for chamar essa function.
Ex.:
Espero funcionar
Provavelmente você deve adicionar o nome do seu usuario antes do nome da sua function quando estiver em outro usuario e for chamar essa function.
Ex.:
SQL> Con Vinicius
Connected as Vinicius
SQL> Select Irmaross.To_Juliana(Sysdate) From Dual;
-
- Rank: Estagiário Sênior
- Mensagens: 13
- Registrado em: Ter, 01 Nov 2005 11:53 pm
- Localização: São Paulo
- Contato:
lrmaross, perdão por entrar na discussão, mas você quer converter data normal para julian não? Por que você escreveu uma função se a to_char já faz isso? Com a vantagem de não haver switch de contexto entre sql e plsql que poderia gerar inúmeros sql recursivos dependendo do número de registros que a função iria ler.
Outra coisa, sua função não me parece devolver corretamente o valor juliano de uma data, veja:
E aqui parte do manual que explica:
Outra coisa, sua função não me parece devolver corretamente o valor juliano de uma data, veja:
ops$marcio@LNX10GR2> CREATE OR REPLACE Function to_juliana (dt_a_converter DATE )
2 RETURN NUMBER IS
3 dt_juliana NUMBER;
4
5 BEGIN
6 /* Inicio do Calculo de conversão para Data Juliana */
7
8 dt_juliana := 0;
9 dt_juliana := To_Char( TO_DATE( dt_a_converter ) , 'YYYYDDD') - 1900000 ;
10
11 /* atribuímos o retorno da função */
12 RETURN( dt_juliana );
13 END To_Juliana;
14 /
Function created.
ops$marcio@LNX10GR2> select to_juliana(trunc(sysdate)) from dual;
TO_JULIANA(TRUNC(SYSDATE))
--------------------------
105350
1 row selected.
ops$marcio@LNX10GR2> select to_date( 105350, 'j') from dual;
TO_DATE(105350,'J')
-------------------
07/06/4424 00:00:00
1 row selected.
Agora com o to_char
ops$marcio@LNX10GR2> select to_char(trunc(sysdate), 'j') from dual;
TO_CHAR
-------
2453721
1 row selected.
ops$marcio@LNX10GR2> select to_date( 2453721, 'j' ) from dual;
TO_DATE(2453721,'J'
-------------------
16/12/2005 00:00:00
1 row selected.
http://download-west.oracle.com/docs/cd ... .htm#47829Using Julian Dates
A Julian date is the number of days since January 1, 4712 bc. Julian dates allow continuous dating from a common reference. You can use the date format model "J" with date functions TO_DATE and TO_CHAR to convert between Oracle DATE values and their Julian equivalents.
Example
This statement returns the Julian equivalent of January 1, 1997:
SELECT TO_CHAR(TO_DATE('01-01-1997', 'MM-DD-YYYY'),'J') FROM DUAL; TO_CHAR -------- 2450450
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Só pra complementar:Provavelmente você deve adicionar o nome do seu usuario antes do nome da sua function quando estiver em outro usuario e for chamar essa function.
Se você não quiser colocar o OWNER antes de chamar a função, você pode torná-la pública criando um sinônimo publico !!!
CREATE PUBLIC SYNONYM sua_function FOR sua_function;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes