[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