Fórum Stored procedure no Firebird com Delphi #441604
30/04/2013
0
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***
Curtir tópico
+ 0Posts
01/05/2013
Frederico Brigatte***
Gostei + 0
01/05/2013
Frederico Brigatte***
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?
Gostei + 0
02/05/2013
Frederico Brigatte***
Gostei + 0
02/05/2013
Frederico Brigatte***
Gostei + 0
02/05/2013
Frederico Brigatte***
Gostei + 0
02/05/2013
Frederico Brigatte***
Gostei + 0
02/05/2013
Paulo Freire
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;
Gostei + 0
02/05/2013
Frederico Brigatte***
O que seria esse código? Preciso de stored procedure e generator. Como que faço?
Gostei + 0
03/05/2013
Frederico Brigatte***
Gostei + 0
03/05/2013
Frederico Brigatte***
Gostei + 0
03/05/2013
Frederico Brigatte***
Gostei + 0
03/05/2013
Paulo Freire
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
Gostei + 0
03/05/2013
Paulo Freire
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^
Gostei + 0
03/05/2013
Frederico Brigatte***
Obrigado pelo retorno, e como que utilizo isso pelo Delphi? Sei que tem que usar o componente SQLStoredProc da guia dbExpress.
Gostei + 0
03/05/2013
Paulo Freire
Depois cria um botão no seu form do Delphi com o primeiro código que lhe passei la em cima.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)