[firebase-br] RES: Ajuda com Stored procedure
Paulo César Dias da Silva
paulinhodias em gmail.com
Ter Mar 12 16:09:26 -03 2013
> CREATE OR ALTER PROCEDURE SP_PERMISSOES (
> p_acao varchar(100),
> p_login varchar(100),
> p_perm char(1),
> p_acao_nome varchar(100))
> as
> begin
> for select ACAO_NOME from MENU
> into :p_acao_nome do
> begin
> if(Exists(select * from PERFIS_CONF WHERE ACAO_NOME =:p_acao_nome))then
> begin
> Update PERFIS_CONF set ACAO = p_acao, perfil = p_login , PERMISSAO =
p_perm WHERE ACAO_NOME =:p_acao_nome
> end
> else
> begin
> insert into PERFIS_CONF(ACAO, perfil, PERMISSAO, ACAO_NOME)
> values
> (
> :p_acao,
> :p_login,
> :p_perm,
> :p_acao_nome
> );
> end
> end
Atenciosamente,
Paulo César Dias da Silva
Analista de Sistemas
Celular: (31) 9399-6307 – TIM | Celular: (31) 8547-4292 - OI
Skype: pdiaspbh | GoogleTalk: paulinhodias
MSN: paulocesardiassilva em hotmail.com
Esta mensagem, incluindo seus anexos, tem caráter confidencial e seu
conteúdo é restrito ao destinatário da mensagem. Caso você tenha recebido
esta mensagem por engano, queira, por favor, retorná-la ao destinatário e
apagá-la de seus arquivos. Qualquer uso não autorizado, replicação ou
disseminação desta mensagem ou parte dela é expressamente proibida. O autor
não é responsável pelo conteúdo ou a veracidade desta informação.
-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Gladiston
Santana
Enviada em: terça-feira, 12 de março de 2013 11:42
Para: FireBase
Assunto: Re: [firebase-br] Ajuda com Stored procedure
Do jeito que vejo, a principio voce está tentando inserir :
p_acao varchar(100),
p_login varchar(100),
que já foram inclusos antes.
se estiver interessado em atualizar, quando algo já existe entao troque o
'insert into' por 'update or insert into', assim, na préexistencia da chave
primaria, ao inves de usar insert, o sistema fará o update.
inte+
Gladiston Santana
Departamento de TI
Grupo Vidy
Tel (11) 4787-3122 ramal 228
Rod. Régis Bittencourt 3360 - Km 272,5
Taboão da Serra - SP - CEP: 06793-000
Visite nosso site: www.vidy.com.br
Visite também : www.expolabor.com.br
Em 12 de março de 2013 01:30, Reijanio Nunes Ribeiro
<rnribeiro em gmail.com>escreveu:
> Boa dia a todos estou com um pequenino problema que é o seguinte tenho
> uma rotina de banco dedados que faz o controle de usuraio juntamente
> com actionlist do delphi, e funciona té bem embora ainda não esteja
> completamente implementada agora esstou com o seguinte problema
>
> tenho as seguintes tabelas
> perfis_conf
> CREATE TABLE PERFIS_CONF (
> ACAO VARCHAR(40) NOT NULL,
> PERFIL VARCHAR(20) NOT NULL,
> PERMISSAO VARCHAR(1),
> ACAO_NOME VARCHAR(60)
> );
>
> ALTER TABLE PERFIS_CONF ADD PRIMARY KEY (ACAO, PERFIL); ALTER TABLE
> PERFIS_CONF ADD CONSTRAINT FK_PERFIS_CONF_1 FOREIGN KEY
> (PERFIL) REFERENCES PERFIL (PERFIL) ON DELETE CASCADE ON UPDATE
> CASCADE;
>
> até ai lz ta funcionando sem problemas
>
> agora vem o problema estou c riando uma rotina que mapeia qualquer
> mudança n quantdidade de actionlist que possa ter na tela isso na
> pratica serve pra mim não ter que apagar um perfil inteiro e recria-lo
> toa vez que inserir um menu novo por que isto é muito chato então
> criei uma tabela que atrelada a uma rotina lr todos os actions do form
> principal e salva nessa tabela toda vez que alguem acessa o sistema
> caso ele cnstate algguma mudança na quantidade de action criei esta sp
> para que ele insira automaticamente o novo menu no sistema porem esta
> dando todo tipo de erro desde list index out of bound ou simplesmente
> tentando pelo ibexpert da erro de primary key ja estou em opções e
> conto com a ajuda dos amigos
>
> a sintaxe é +- assim
> CREATE OR ALTER PROCEDURE SP_PERMISSOES (
> p_acao varchar(100),
> p_login varchar(100),
> p_perm char(1),
> p_acao_nome varchar(100))
> as
> begin
> for select ACAO_NOME from MENU
> into :p_acao_nome do
> begin
> if(Exists(select * from PERFIS_CONF WHERE ACAO_NOME =:p_acao_nome))then
> begin
> -- NÃO FAZ NADA
> end
> else
> begin
> insert into PERFIS_CONF(ACAO, perfil, PERMISSAO, ACAO_NOME)
> values
> (
> :p_acao,
> :p_login,
> :p_perm,
> :p_acao_nome
> );
> end
> end
>
> mais toda vez uso esta ssintaxe
> EXECUTE procedure sp_permissoes('TESTE', 'ADMINISTRADOR', 'N',
> 'AC_CAIXA')
>
> porem da esse erro pra qualquer coisa que lançar, o erro é este
>
> Invalid insert or update value(s): object columns are constrained - no
> 2 table rows can have duplicate column values.
> violation of PRIMARY or UNIQUE KEY constraint "INTEG_24" on table
> "PERFIS_CONF".
> At procedure 'SP_PERMISSOES'.
>
> desde ja grato pela ajuda
>
> --
> Reijanio Nunes Ribeiro
> Desenvolvedor Delphi/Php
> Suporte em TI
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista