[firebase-br] Revoke do PUBLIC

Mário Reis mariodosreyx em gmail.com
Segunda Setembro 18 10:08:00 -03 2023


Esqueça por favor. Consegui resolver e funciona claro.
Como pode servir a mais alguém deixo aqui o meu exemplo feito a partir
daquele outro que vem com a documentação, mas que não havia necessitado
usar até hoje.
Esqueci o EXECUTE BLOCK RETURNS (CONN INT, TRAN INT, DB VARCHAR(255)) ....
e passeio importante para uma Stored Procedure com alguns parâmetros e
outros talvez ainda a acrescer o vai dar muito jeito.
Aqui deixo a minha source:
CREATE PROCEDURE CONSULTA_EXTERNA(
  IN_USER TYPE OF USERID,
  IN_PWD VARCHAR(20),
  IN_ID SMALLINT)
RETURNS(
  OUT_ID INTEGER,
  OUT_NOSOC SMALLINT,
  OUT_NOME VARCHAR(50),
  OUT_APELIDO VARCHAR(20),
  OUT_DTADM TYPE OF COLUMN SOCIOS.DATADM)
AS
DECLARE VARIABLE SDB VARCHAR(255);
DECLARE VARIABLE SSQL VARCHAR(255);
BEGIN

 sDB='<MYDINAMIC_IP>/3058:D:\Firebird\Fb30\WORK\MyDB.FDB';
  sSql=
    ' Select P.Pessoa_id, P.Nome, P.Apelido, S.NOSOC_ID, s.DATADM From
Pessoas P '||
    ' Inner Join Socios S on S.Socios_ID=P.Pessoa_Id '||
    ' Where S.NOSOC_ID *>=* '||TRIM(CAST( :IN_ID AS VARCHAR(15)) ) ;

  FOR
      EXECUTE STATEMENT
      ( :sSql )
      ON EXTERNAL DATA SOURCE :sDB
      AS USER *:IN_USER* PASSWORD *:IN_PWD  *
      WITH COMMON TRANSACTION
      INTO :OUT_ID, :OUT_NOME, :OUT_Apelido , :OUT_NoSoc,:OUT_DTADM

   DO SUSPEND;  -- acaba com o ciclo e "despeja tudo no ecran"!

END;
  Significará que o *DO SUSPEND*, lá por de trás terá um cursor. Saberá
como pegá-lo?
Com os meus melhores cumprimentos
Mário Agostinho Reis
919262146

Esta mensagem contém informação de natureza confidencial e é
exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
receber este email agradecemos que não o copie nem o reenvie e que nos
notifique do ocorrido através do email de resposta.


Mário Reis <mariodosreyx em gmail.com> escreveu no dia sábado, 16/09/2023 à(s)
19:09:

> Então as minhas fontes, com LibreOffice, com macros algo bugadas, fazendo
> conexão a uma <FB> database sempre lhe serviram para alguma carta?
> Lembra-se de lhe ter dito que  GET_ROUND_AS_ABNT não compilava aqui pois
> parece que algum tempo antes já a teria compilado...
>
> *Bem se puder ajudar com um exemplo funcional de *"ON EXTERNAL DATABASE"
> é que na rede não encontro um que funcione!
>
> A ideia é a partir de uma tabelas da database velha fazer upgrade da nova
> migrada
>  select * from pessoas p where p.id=???
>   ON EXTERNAL MYIP:D:\trab\db\MYdatabase
> as user 'SYSDBA' PASSWORD 'masterkey'
> with common transaction
> INTO: FieldVArs1...2...3...4.
> e tem como correr isso num query?
> Obrigado
> Mário Reis
> 919262146
>
> Esta mensagem contém informação de natureza confidencial e é
> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
> receber este email agradecemos que não o copie nem o reenvie e que nos
> notifique do ocorrido através do email de resposta.
>
>
> Mário Reis <mariodosreyx em gmail.com> escreveu no dia sábado, 5/08/2023
> à(s) 12:23:
>
>> Boas Gladison,
>> CREATE FUNCTION GET_ROUND_AS_ABNT... NÃO COMPILAM mais! Os PARÂMETROS DE
>> Round() não estão bem!
>> Com os meus melhores cumprimentos
>> Mário Agostinho Reis
>> 919262146
>>
>> Esta mensagem contém informação de natureza confidencial e é
>> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por engano,
>> receber este email agradecemos que não o copie nem o reenvie e que nos
>> notifique do ocorrido através do email de resposta.
>>
>>
>> Gladiston Santana <gladiston.santana em gmail.com> escreveu no dia sexta,
>> 4/08/2023 à(s) 18:09:
>>
>>> Boa tarde!
>>> A função round pode retornar tanto inteiro como float:
>>>
>>> https://firebirdsql.org/file/documentation/html/en/refdocs/fblangref40/firebird-40-language-reference.html#fblangref40-scalarfuncs-round
>>>
>>> Às vezes o arredondamento não é do jeito que a gente quer, daí
>>> adaptações precisam ser feitas, por exemplo, aqui no Brasil temos um tipo
>>> de arredondamento usando uma norma ABNT que difere completamente do padrão
>>> sql-92, daí temos que criar uma sqlfunction adaptando a partir de uma
>>> função mais próxima. Veja esse exemplo:
>>> https://gladiston.net.br/banco-de-dados/arredondamento-do-tipo-abnt/
>>>
>>> Sabendo um pouco de psql vamos suprindo funções que não existem, se
>>> quiser pode pegar emprestado as que publiquei na minha pagina pessoal:
>>> https://gladiston.net.br/banco-de-dados/
>>>
>>> Em qui., 3 de ago. de 2023 às 21:37, Mário Reis <mariodosreyx em gmail.com>
>>> escreveu:
>>>
>>>> Boa tardes Gladison
>>>>
>>>> Você diz que há muito não usa udfs.
>>>> Estou tentando o mesmo mas esbarro em algumas dificuldades.
>>>> Ex: udf_rounddec(X, y) tentei o round(x, y) mas não é o mesmo. Retorna
>>>> um inteiro enquanto o outro retorna um double.
>>>> Como fazer num caso destes. Conhece o substituto? Obrigado
>>>>
>>>> Mário Reis (919262146)
>>>>
>>>> A quarta, 2 de ago de 2023, 17:03, Mário Reis <mariodosreyx em gmail.com>
>>>> escreveu:
>>>>
>>>>> Disponível para qualquer coisa. Embora com tempo mesmo escasso, sempre
>>>>> se arranja uma brecha.
>>>>> E, não está pronto porque ainda falta fazer o registo de
>>>>> correspondência de modo automática e enviar por mail.
>>>>> Nesta última parte, não faço, ainda, a menor ideia de como irei fazer,
>>>>> mas hei-de lá chegar.
>>>>> Atentamente
>>>>> Com os meus melhores cumprimentos
>>>>> Mário Agostinho Reis
>>>>> 919262146
>>>>>
>>>>> Esta mensagem contém informação de natureza confidencial e é
>>>>> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por
>>>>> engano,
>>>>> receber este email agradecemos que não o copie nem o reenvie e que nos
>>>>> notifique do ocorrido através do email de resposta.
>>>>>
>>>>>
>>>>> Mário Reis <mariodosreyx em gmail.com> escreveu no dia quarta, 2/08/2023
>>>>> à(s) 16:51:
>>>>>
>>>>>> O meu código está um pedaço (grande) sujo, mas se V. tiver pachorra
>>>>>> para dar um olhada e remover uns bugs  passo-te  já a seguir.
>>>>>> Eu antes nunca tinha trabalhado com basic de forma que ainda estou
>>>>>> tentando perceber o porque do "argument errors"
>>>>>> Com os meus melhores cumprimentos
>>>>>> Mário Agostinho Reis
>>>>>> 919262146
>>>>>>
>>>>>> Esta mensagem contém informação de natureza confidencial e é
>>>>>> exclusivamente dirigida ao(s) destinatário(s) indicado(s). Se, por
>>>>>> engano,
>>>>>> receber este email agradecemos que não o copie nem o reenvie e que nos
>>>>>> notifique do ocorrido através do email de resposta.
>>>>>>
>>>>>>
>>>>>> Gladiston Santana <gladiston.santana em gmail.com> escreveu no dia
>>>>>> segunda, 31/07/2023 à(s) 17:43:
>>>>>>
>>>>>>> Bacana Mario,
>>>>>>>
>>>>>>> Depois se tiver um tempo, me fala como você faz o acesso do swriter
>>>>>>> ou scalc ao banco.
>>>>>>> Um banco bem modelado e feito direitinho com triggers e triggers
>>>>>>> disparando procedures pode funcionar sem um sistema e tô querendo
>>>>>>> demonstrar isso no futuro e explicar que o banco bem modelado pode
>>>>>>> funcionar sem um sistema complexo por trás.
>>>>>>>
>>>>>>> []´s
>>>>>>>
>>>>>>> Em qui., 27 de jul. de 2023 às 16:47, Mário Reis <
>>>>>>> mariodosreyx em gmail.com> escreveu:
>>>>>>>
>>>>>>>> Pois! Entendo o que diz. Por exemplo os meus usuários via swriter e
>>>>>>>> através de umas macros que ando a aperfeiçoar, em basic, acedem à tabela
>>>>>>>> clientes da m/ FDB.
>>>>>>>> Chamam um novo documento e ele valida user e pwd cria o documento
>>>>>>>> com. N⁰ único, referente e data e com um botão vai à tabela cliente e
>>>>>>>> carrega o endereço fiscal etc...o sequencial único é gerado à maneira
>>>>>>>> antiga, dis dois todos trás o último e acrescento +1 e gravo . Num pequeno
>>>>>>>> escritório está a funcionar e agora ninguém mais grava o documento novo em
>>>>>>>> cima do velho perdendo-o.
>>>>>>>> Mas aí entram todos como Leitor que só lê não faz mais nada.
>>>>>>>>
>>>>>>>> A quinta, 27/07/2023, 17:23, Gladiston Santana <
>>>>>>>> gladiston.santana em gmail.com> escreveu:
>>>>>>>>
>>>>>>>>> No caso de UDFs e SQL Functions é complicado saber quem irá usar
>>>>>>>>> ou não, como são objetos que apenas retornam dados então como política eu
>>>>>>>>> dou acesso a PUBLIC. Embora hoje, não uso mais UDFs.
>>>>>>>>> Acho que a prática mais eficiente para permissões é você criar uma
>>>>>>>>> role, digamos "ROLE_VENDAS" e aplicar os acessos que o sistema de vendas
>>>>>>>>> precisa ter a este role. Daí quem se logar usando o sistema de vendas
>>>>>>>>> identifica-se com user_name, password, database, host e enfim ocultamente
>>>>>>>>> dentro do seu programa você informa também a ROLE_VENDAS e obterá todos os
>>>>>>>>> acessos necessários. Daí é só ficar associando usuários do sistema de
>>>>>>>>> vendas a ROLE_VENDAS, é muito mais fácil gerenciar dessa forma ao invés de
>>>>>>>>> individualmente, até porque, um usuario mal intencionado pode praticar
>>>>>>>>> modificações por fora do sistema usando um excel da vida.
>>>>>>>>>
>>>>>>>>> De inicio, voce pode criar uma ROLE_ADMIN e dar um "grant all to
>>>>>>>>> all" nela e associar todos os usuarios a ela e logar-se no sistema sempre
>>>>>>>>> usando esta ROLE. Daí ninguem mais reclama de acesso e por fora do
>>>>>>>>> sistema(ex. excel) o usuario não terá acesso algum, a menos que
>>>>>>>>> voce forneça o nome da role para ele.
>>>>>>>>>
>>>>>>>>> inte+
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Em qui., 27 de jul. de 2023 às 07:41, Mário Reis <
>>>>>>>>> mariodosreyx em gmail.com> escreveu:
>>>>>>>>>
>>>>>>>>>> Gladiston um bom dia para você,
>>>>>>>>>> Não não causou qualquer erro, pelo contrário ao fazer to public
>>>>>>>>>> os outros usuários não ficavam autorizados e conferi várias vezes o
>>>>>>>>>> *commit*
>>>>>>>>>> Há uma possibilidade de haver algum bug na ferramenta que uso o
>>>>>>>>>> EMS Sql Manager. Tive que fazer um script "à lá mano" com editor de texto e
>>>>>>>>>> depois correr
>>>>>>>>>> GRANT EXECUTE ON FUNCTION UDF_YEAR TO PUBLIC, + lista;
>>>>>>>>>> Eu achei muito estranho, pois de acordo com a documentação é como
>>>>>>>>>> você diz. Já escrevi para eles, que validaram o erro e propõem-se corrigir
>>>>>>>>>> na próxima release.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Gladiston Santana
>>>>>>> Escritório: 4787-3122 Ramal 228
>>>>>>> Cel Tim/WhatsApp: (11)95144-8188
>>>>>>>
>>>>>>
>>>
>>> --
>>> Gladiston Santana
>>> Escritório: 4787-3122 Ramal 228
>>> Cel Tim/WhatsApp: (11)95144-8188
>>>
>>


Mais detalhes sobre a lista de discussão lista