[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