[firebase-br] Ajuda com Stored procedure
Gladiston Santana
gladiston em vidy.com.br
Ter Mar 12 11:41:58 -03 2013
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
>
Mais detalhes sobre a lista de discussão lista