[firebase-br] GRANT SELECT, INSERT, REFERENCES, UPDATE ON '||:OUT_TBLNAME||' TO ' ||:IN_USER

Carlos H. Cantu listas em warmboot.com.br
Dom Set 21 23:10:08 -03 2014


Dificil dizer alguma coisa sem ter mais detalhes da sequencia das
operações envolvidas.

Experimente tirar o SUSPEND (ele só é necessário em procedures
selecionáveis).

Certifique-se tb que o FOR SELECT está retornando alguma coisa o
esperado.

PS: Não acho uma boa idéia chamar a procedure a partir de um trigger,
usando, portanto, uma mesma transação que executou tanto DML como DDL.

[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br

MR> Cantu,


MR> Estou tentando dar um grant ou revoke geral depois de criar um user na
MR> minha tabela e na security2, chamando a procedure abaixo duma trigger,
MR> assim: AFTER_INSERT_OR_UPDATE: Execute Procedure SP$_GRANTS(NEW.Login)
MR> returning_values...
MR> ou BEFORE_DELETE Execute Procedure SP$_REVOKES(OLD.Login) 
MR> returning_values...

MR> CREATE PROCEDURE SP$_GRANTS(
MR>   IN_USER VARCHAR(20) COLLATE PXW_INTL850)
MR> RETURNS(
MR>   OUT_TBLNAME VARCHAR(50) COLLATE PXW_INTL850,
MR>   OUT_SQLTXT VARCHAR(100) COLLATE PXW_INTL850)
MR> AS
MR> BEGIN

MR>   /* Procedure body */
MR> FOR
MR>   SELECT RDB$RELATION_NAME
MR>     FROM RDB$RELATIONS
MR>    WHERE RDB$VIEW_BLR IS NULL 
MR>      AND (RDB$SYSTEM_FLAG = 0 OR RDB$SYSTEM_FLAG IS NULL)
MR>     INTO :OUT_TBLNAME
MR>  DO
MR>   BEGIN
MR>   
MR>   -- REVOKE SELECT, INSERT, REFERENCES, UPDATE ON ACRANIB38 FROM LEILA;
MR>    OUT_SQLTXT='GRANT SELECT, INSERT, REFERENCES, UPDATE ON 
MR> '||:OUT_TBLNAME||' TO ' ||:IN_USER ;
MR>   
MR>    EXECUTE STATEMENT :OUT_SQLTXT
MR>       WITH COMMON TRANSACTION
MR>    AS USER 'SYSDBA' PASSWORD 'deEpDown!23' ;     
MR>   
MR>    
MR>   END  
MR>   
MR>   SUSPEND;
MR>   
MR> END;

MR> O que lhe falta ? Porque não funciona nem dá Erro?
MR> Obrigado

MR> Mário



MR> ______________________________________________
MR> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
MR> Para saber como gerenciar/excluir seu cadastro na lista, use:
MR> http://www.firebase.com.br/fb/artigo.php?id=1107
MR> Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista