[firebase-br] Erro ao criar SP no Firebird 2.5
hmendes.nf em gmail.com
hmendes.nf em gmail.com
Qui Maio 17 11:13:32 -03 2012
Bom dia Hélio!
Tente remover os caracteres acentuados do comentarios.
Humberto Mendes
-----Mensagem Original-----
From: Hélio Oliveira
Sent: Wednesday, May 16, 2012 10:58 PM
To: lista em firebase.com.br
Subject: [firebase-br] Erro ao criar SP no Firebird 2.5
Boa noite Colegas!
Tenho um banco de dados do Firebird 2.0 que estou tentando recriar o
mesmo no Firebird 2.5 (extrair o metadata no IBExpert), porém durante o
processo esta ocorrendo alguns erros na criação de algumas Storeds
Procedures vide exemplo abaixo:
*This operation is not defined for system tables. unsuccessful metadata
update.STORE RDB$PROCEDURES failed.* - Esta é a mensagem de erro
apresentanda.
Obs.: Esta mesma SP esta funcionando normalmente no FB 2.0.
CREATE OR ALTER PROCEDURE CAGED (
MES INTEGER,
ANO INTEGER)
RETURNS (
AUTORIZACAO VARCHAR(7),
AUT_NOME VARCHAR(35),
AUT_CNPJ VARCHAR(14),
AUT_ENDERECO VARCHAR(35),
AUT_CEP VARCHAR(8),
AUT_UF VARCHAR(2),
AUT_DDD VARCHAR(4),
AUT_TELEFONE VARCHAR(8),
AUT_RAMAL VARCHAR(5),
AUT_TOTAL_MOVIMENTACOES INTEGER,
EST_CNPJ VARCHAR(14),
EST_CEP VARCHAR(8),
EST_CNAE VARCHAR(7),
EST_NOME VARCHAR(40),
EST_ENDERECO VARCHAR(40),
EST_BAIRRO VARCHAR(20),
EST_UF VARCHAR(2),
EST_TOTAL_EMPREGADO INTEGER,
EST_SUBCLASSE_CNAE VARCHAR(2),
EMP_PIS VARCHAR(11),
EMP_SEXO VARCHAR(1),
EMP_ADMISSAO DATE,
EMP_NASCIMENTO DATE,
EMP_INSTRUCAO VARCHAR(2),
EMP_REMUNERACAO NUMERIC(12,2),
EMP_HORAS_SEMANAIS VARCHAR(2),
EMP_TIPO_MOVIMENTO VARCHAR(2),
EMP_DIA_DESLIGAMENTO VARCHAR(2),
EMP_NOME VARCHAR(40),
EMP_CTPS VARCHAR(8),
EMP_CTPS_SERIE VARCHAR(4),
EMP_CTPS_UF VARCHAR(2),
EMP_RACA_COR VARCHAR(1),
EMP_PORTADOR_DEFICIENCIA VARCHAR(1),
EMP_DEFICIENTE VARCHAR(1),
EMP_TIPO_DEFICIENCIA VARCHAR(1),
ADMISSOES INTEGER,
DEMISSOES INTEGER,
EMP_CBO VARCHAR(6))
AS
declare variable dta_inicio date;
declare variable dta_final date;
declare variable ano_bisexto varchar(1);
declare variable cnae varchar(7);
declare variable tp_movimento varchar(2);
begin
/* Dados do autorizado e do estabelecimento */
select dta_inicio,
dta_final
from first_last_day(:mes, :ano)
into :dta_inicio, :dta_final;
select substring(e.nome from 1 for 35) as nome_entidade,
c.codigo_caged,
substring((e.endereco || ',' || e.numero) from 1 for 35) as
endereco,
e.cnpj ,
e.cep,
Substring(e.telefone_01 from 1 for 2) as ddd,
substring(e.telefone_01 from 3 for 8) as telefone,
e.uf,
c.sefip_cnae
from empresa e, config c
into :aut_nome, :autorizacao, :aut_endereco, :aut_cnpj, :aut_cep,
:aut_ddd,
:aut_telefone, :aut_uf, :cnae;
if (:autorizacao is null) then
autorizacao = '0000000';
est_nome = :aut_nome;
est_cnpj = :aut_cnpj;
est_cnae = substring(:cnae from 1 for 5);
est_subclasse_cnae = substring(:cnae from 6 for 2);
/* Total de trabalhadores existentes no 1º dia do mês */
select (select count(f.codigo)
from funcionario f) -
(select count(h.matricula)
from historico h
join tabela_afastamento t on (t.codigo = h.codigo_tab_afas)
where h.afa_ret = 'A'
and t.ad = 'D')
from rdb$database into :est_total_empregado;
/* Total de movimentações no mês (admissões/demissões) */
select count(f.codigo)
from funcionario f
where f.data_admissao between :dta_inicio and :dta_final into
:admissoes;
select count(h.matricula)
from historico h
join tabela_afastamento t on (t.codigo = h.codigo_tab_afas)
where h.data between :dta_inicio and :dta_final
and h.afa_ret = 'A'
and t.ad = 'D' into :demissoes;
aut_total_movimentacoes = :admissoes + :demissoes;
/* Dados dos funcionários admitidos/demitidos no mês */
for select f.pis_pasep,
(case f.sexo
when 'F' then '2'
when 'M' then '1'
end) as Sexo,
f.nascimento,
cast(f.grau_instrucao as varchar(2)) as instrucao,
c.salario,
cast(c.horas_semanais as varchar(2)) horas_semanais,
f.data_admissao,
cast(f.tipo_admissao as varchar(2)) as tp_movimento,
' ' as dia_desligamento,
substring(f.nome from 1 for 40) as nome,
f.ctps_numero,
substring(f.ctps_serie from 1 for 4) as serie,
f.raca_cor,
f.deficiente,
c.codigo_cbo,
f.uf_emissor,
f.deficiente_fisico
from funcionario f
join cargo c on (c.codigo = f.codigo_cargo)
where f.data_admissao between :dta_inicio and :dta_final
union all
select f.pis_pasep,
(case f.sexo
when 'F' then '2'
when 'M' then '1'
end) as Sexo,
f.nascimento,
cast(f.grau_instrucao as varchar(2)) as instrucao,
c.salario,
cast(c.horas_semanais as varchar(2)) horas_semanais,
f.data_admissao,
cast(t.codigo_rais as varchar(2)) as tp_movimento,
(extract(day from h.data))as dia_desligamento,
substring(f.nome from 1 for 40) as nome,
f.ctps_numero,
substring(f.ctps_serie from 1 for 4) as serie,
f.raca_cor,
f.deficiente,
c.codigo_cbo,
f.uf_emissor,
f.deficiente_fisico
from historico h
join funcionario f on (f.codigo = h.matricula)
join cargo c on (c.codigo = f.codigo_cargo)
join tabela_afastamento t on (t.codigo = h.codigo_tab_afas)
where h.data between :dta_inicio and :dta_final
and h.afa_ret = 'A'
and t.ad = 'D'
into :emp_pis, :emp_sexo, :emp_nascimento, :emp_instrucao,
:emp_remuneracao, :emp_horas_semanais, :emp_admissao,
:tp_movimento, :emp_dia_desligamento, :emp_nome,
:emp_ctps, :emp_ctps_serie, :emp_raca_cor, :emp_deficiente,
:emp_cbo, :emp_ctps_uf, :emp_tipo_deficiencia do
begin
if (:tp_movimento = '1') then
emp_tipo_movimento = '10';
if (:tp_movimento = '2') then
emp_tipo_movimento = '20';
if ((:tp_movimento = '3') or (:tp_movimento = '4')) then
emp_tipo_movimento = '70';
if (:tp_movimento = '5') then
emp_tipo_movimento = '35';
if ((:tp_movimento = '10') or (:tp_movimento = '20')) then
emp_tipo_movimento = '32';
if (:tp_movimento = '11') then
emp_tipo_movimento = '31';
if (:tp_movimento = '12') then
emp_tipo_movimento = '45';
if (:tp_movimento = '21') then
emp_tipo_movimento = '40';
if ((:tp_movimento = '30') or (:tp_movimento = '31')) then
emp_tipo_movimento = '80';
if ((:tp_movimento = '60') or (:tp_movimento = '62') or
(:tp_movimento = '64')) then
emp_tipo_movimento = '60';
if ((:tp_movimento = '70') or (:tp_movimento = '71') or
(:tp_movimento = '72') or
(:tp_movimento = '73') or (:tp_movimento = '74') or
(:tp_movimento = '75') or
(:tp_movimento = '76') or (:tp_movimento = '78') or
(:tp_movimento = '79')) then
emp_tipo_movimento = '50';
suspend;
end
end
--
[]'s,
Hélio Oliveira
Analista de Sistemas
Delphi Developer
http://hpensador.blogspot.com/
______________________________________________
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