Fórum Stored procedure no Firebird com Delphi #441604

30/04/2013

0

Boa noite pessoal, eu novamente.

Preciso montar duas tabelas no Firebird: Funcionarios e Dependentes

Funcionários:
Matricula, Nome, Endereço, Cidade, Bairro, Número horas/mes e Valor do salario hora

Dependente:
Matricula, Nome do dependente, Filiação e Data nascimento

Create table funcionarios (matricula varchar(5) not null,
nome varchar(20),
endereco varchar(30),
cidade varchar(30),
bairro varchar(30),
horas_mes float,
valor_hora float));

Alter table funcionarios add constraint pk_matricula primary key(matricula);

Create table dependentes (matricula varchar(5) not null,
nome_dep varchar(20),
filiacao varchar(30),
data_nasc date);

Alter table dependentes add constraint fk_matricula_1 foreign key(matricula)
references funcionarios(matricula) on delete cascade on update cascade;


1ª Dúvida: O script está certo?
2ª Dúvida: Como criar um generator para adicionar 1 na Matricula do Funcionário?
3ª Dúvida: Como fazer uma store procedure para excluir o funcionário e seus respectivos dependentes?

Banco de dados: Firebird.
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

01/05/2013

Frederico Brigatte***

Faltou na tabela dependentes, o Código do Dependente, que coloquei como integer(10) not null
Responder

Gostei + 0

01/05/2013

Frederico Brigatte***

A procedure para excluir o funcionário e seus dependentes seria assim:

CREATE PROCEDURE P_APAGA (
P_MATRICULA)
AS
begin
DELETE Func.Matricula
FROM Func
WHERE Func.Matricula = :P_MATRICULA;
end

E como faço no delphi para rodar isso e também para gerar os códigos como auto-incremento com generator?
Responder

Gostei + 0

02/05/2013

Frederico Brigatte***

Alguém pra ajudar?
Responder

Gostei + 0

02/05/2013

Frederico Brigatte***

Poxa, ninguém???????
Responder

Gostei + 0

02/05/2013

Frederico Brigatte***

Puxa,preciso disso para amanhã. Alguém poderia me ajudar com isso, por favor????
Responder

Gostei + 0

02/05/2013

Frederico Brigatte***

Dois dias que postei e ninguém para ajudar...
Responder

Gostei + 0

02/05/2013

Paulo Freire

rsrsr, Vamos Frederico


try
DM.SP_CAD_ARMA.ParamByName('CODIGO_ARMA').AsString := Remove(txtCodigo.Text);
DM.SP_CAD_ARMA.ParamByName('NOME').AsString := txtNome.Text;
DM.SP_CAD_ARMA.ParamByName('EMPRESA').AsString := txtEmpresa.Text;
DM.SP_CAD_ARMA.ParamByName('PORTE').AsString := txtPorte.Text;
DM.SP_CAD_ARMA.ParamByName('CALIBRE').AsString := txtCalibre.Text;
DM.SP_CAD_ARMA.ParamByName('CPF_PROPRIETARIO').AsString := txtCPF.Text;
DM.SP_CAD_ARMA.ParamByName('CATEGORIA').AsInteger := DBLookupComboBox_CATEGORIA.KeyValue;
DM.SP_CAD_ARMA.ExecProc;

finally

//Deu tudo Certo e Grava
Application.MessageBox('Equipamento Belico Registrado com sucesso !!!','Salvar',
MB_ICONINFORMATION + mb_OK);



end;
Responder

Gostei + 0

02/05/2013

Frederico Brigatte***

Paulo, obrigado pelo retorno.

O que seria esse código? Preciso de stored procedure e generator. Como que faço?
Responder

Gostei + 0

03/05/2013

Frederico Brigatte***

Joel, poderia me ajudar, nisso?
Responder

Gostei + 0

03/05/2013

Frederico Brigatte***

Estou precisando somente dos scripts que faz isso e como rodar pelo delphi
Responder

Gostei + 0

03/05/2013

Frederico Brigatte***

Alguém pra ajudar, por favor?
Responder

Gostei + 0

03/05/2013

Paulo Freire

Agora entendi, ai vai um script para criar uma procedure no IBExpert/Firebird

CREATE BAIXA_CRACHA (
CPF varchar(12),
CRACHA integer,
SITUACAO_CRACHA varchar(10),
HORA_SAIDA varchar(10))
as
BEGIN

if (EXISTS (SELECT CRACHA FROM VISITAS WHERE (
CRACHA = :CRACHA AND CPF = :CPF))) then

UPDATE VISITAS
SET
CRACHA = :CRACHA,
SITUACAO_CRACHA = :SITUACAO_CRACHA,
HORA_SAIDA = :HORA_SAIDA
WHERE (CRACHA = :CRACHA) AND (CPF = :CPF) AND VISITAS.HORA_SAIDA IS NULL;

END

Responder

Gostei + 0

03/05/2013

Paulo Freire

Ai vai outra para inclusão

na de cima, esqueci de colocar no começo "CREATE PROCEDURE BAIXA_CRACHA"


segue exemplo

CREATE procedure VISITANTES_INS_UPD (
CPF varchar(20),
NOME varchar(60),
EMPRESA varchar(60),
TELEFONE varchar(30),
RG varchar(20),
ID_LOCAL_VISITADO integer,
VISITADO varchar(30),
QUARTEL integer,
OBS varchar(1000))
as
BEGIN
/* Procedure body */
if (EXISTS (SELECT CPF FROM VISITANTES WHERE (
CPF = :CPF))) then

UPDATE VISITANTES
SET NOME = :NOME,
EMPRESA = :EMPRESA,
TELEFONE = :TELEFONE,
RG = :RG,
ID_LOCAL_VISITADO = :ID_LOCAL_VISITADO,
VISITADO = :VISITADO,
QUARTEL = :QUARTEL,
OBS = :OBS
WHERE (CPF = :CPF);

ELSE

INSERT INTO VISITANTES(
CPF,
NOME,
EMPRESA,
TELEFONE,
RG,
ID_LOCAL_VISITADO,
VISITADO,
QUARTEL,
OBS)

VALUES(
:CPF,
:NOME,
:EMPRESA,
:TELEFONE,
:RG,
:ID_LOCAL_VISITADO,
:VISITADO,
:QUARTEL,
:OBS);


END^
Responder

Gostei + 0

03/05/2013

Frederico Brigatte***

Paulo Freire,

Obrigado pelo retorno, e como que utilizo isso pelo Delphi? Sei que tem que usar o componente SQLStoredProc da guia dbExpress.
Responder

Gostei + 0

03/05/2013

Paulo Freire

No seu DataModule coloque um componente da paleta DBexpress, se tiver usando essa tecnologia de acesso a dados claro, chamadao TSQLStoredProc, coloque a sua conexão, escolha procedure na propriedade StoreProcName,

Depois cria um botão no seu form do Delphi com o primeiro código que lhe passei la em cima.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar