[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