3
respostas

[Dúvida] Constantes dentro de pacotes

Fiquei um pouco confuso, com a possibilidade do "user_app" conseguir acessar constantes do pacote, apresentado com o exemplo do "dbms_output"... Nós sabemos que estas constantes existem, porque criamos, mas como o "user_app" acessa essa relação de constantes?

3 respostas

Oii, Francisco, tudo bem?

A variável user_app consegue acessar os dados (ou modificar) dependendo dos comandos que você insere. Como os privilégios dados ao user_app foram pela linha de código GRANT SELECT, INSERT ON SEGMERCADO TO user_app;, ali também foi cedido o acesso para ler a tabela.

Ele consegue ler a tabela e consequentemente os pacotes que já são do próprio SGBD, como o dbms_output. Esse pacote já é nativo do SGBD da Oracle, então, com as permissões cedidas à variável user_app, ele irá poder ler naturalmente sem precisar de permissões a mais (pois na instalação, os privilégios necessários para fazer essas modificações mais a fundo são especificados no ato de instalar. Ou seja, a permissão foi concedida no momento em que você instalou).

Espero ter ajudado. Se a dúvida persistir, estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Oi, Maria! Tudo bem, e você?

Obrigado pelas informações! :)

Neste caso, para o user_app consultar o conteúdo de uma constante, ele precisará primeiro acessar o pacote (CLIENTE_PAC) e procurar a constante?

Abraços!

Olá, novamente, Francisco! Também estou bem, obrigada por perguntar! :D

Desculpe pela demora em te responder.

Isso mesmo. Já que você criou a constante dentro do pacote CLIENTE_PAC (assim como na videoaula o instrutor mostra), precisamos de uma maneira para acessar essa constante.

Uma analogia pra entender: você colocou um item numa gaveta e fechou a gaveta. Para pegar, é preciso primeiro abrir (acessar o pacote) e depois pegar (procurar a constante).

Vou deixar a documentação oficial sobre os pacotes (está em inglês), porque se você tiver mais curiosidade, é legal dar uma olhada. Inclusive, O link é este:

Espero que isso ajude com a dúvida. =)

Abraços!