Procedure para INSERIR E SALVAR no firebird
09/08/2018
0
create or alter procedure INSERTUPDATETBEMPRESAS (
PEM_ID IDS,
PEM_CODIGO TEXTO_EXTRA_CURTO,
PEM_RAZAO_SOCIAL TEXTO_GRANDE,
PEM_FANTASIA TEXTO_GRANDE,
PEM_CNPJ TEXTO_EXTRA_CURTO,
PEM_IE TEXTO_EXTRA_CURTO,
PEM_IM TEXTO_EXTRA_CURTO,
PEM_ALICOTA_ISS MONETARIO,
PEM_LOGRADOURO TEXTO_GRANDE,
PEM_CEP TEXTO_EXTRA_CURTO,
PEM_NUMERO TEXTO_EXTRA_CURTO,
PEM_COMPLEMENTO TEXTO_GRANDE,
PEM_CODIGO_CIDADE integer,
PEM_CIDADE TEXTO_GRANDE,
PEM_BAIRRO TEXTO_GRANDE,
PEM_UF varchar(2) character set WIN1252,
PEM_HOME TEXTO_GRANDE,
PEM_EMAIL TEXTO_GRANDE,
PEM_TELEFONE TEXTO_EXTRA_CURTO,
PEM_FAX TEXTO_EXTRA_CURTO,
PEM_LOGO TEXTO_GRANDE,
PEM_DESATIVADA BOOLEANO)
as
begin
if (EXISTS(SELECT EM_ID FROM tb_empresas WHERE (tb_empresas.em_id = :pem_id))) THEN
UPDATE TB_EMPRESAS Set
tb_empresas.em_codigo = :pem_codigo,
tb_empresas.em_razao_social = :pem_razao_social,
tb_empresas.em_fantasia = :pem_fantasia,
tb_empresas.em_cnpj = :pem_cnpj,
tb_empresas.em_ie = :pem_ie,
tb_empresas.em_im = :pem_im,
tb_empresas.em_alicota_iss = :pem_alicota_iss,
tb_empresas.em_logradouro = :pem_logradouro,
tb_empresas.em_cep = :pem_cep,
tb_empresas.em_numero = :pem_numero,
tb_empresas.em_complemento = :pem_complemento,
tb_empresas.em_codigo_cidade = :pem_codigo_cidade,
tb_empresas.em_cidade = :pem_cidade,
tb_empresas.em_bairro = :pem_bairro,
tb_empresas.em_uf = :pem_uf,
tb_empresas.em_home = :pem_home,
tb_empresas.em_email = :pem_email,
tb_empresas.em_telefone = :pem_telefone,
tb_empresas.em_fax = :pem_fax,
tb_empresas.em_logo = :pem_logo,
tb_empresas.em_desativada = :pem_desativada
WHERE tb_empresas.em_id = :pem_id;
else
INSERT INTO Tb_EMPRESAS
(tb_empresas.em_codigo,
tb_empresas.em_razao_social,
tb_empresas.em_fantasia,
tb_empresas.em_cnpj,
tb_empresas.em_ie,
tb_empresas.em_im,
tb_empresas.em_alicota_iss,
tb_empresas.em_logradouro,
tb_empresas.em_cep,
tb_empresas.em_numero,
tb_empresas.em_complemento,
tb_empresas.em_codigo_cidade,
tb_empresas.em_cidade,
tb_empresas.em_bairro,
tb_empresas.em_uf,
tb_empresas.em_home,
tb_empresas.em_email,
tb_empresas.em_telefone,
tb_empresas.em_fax,
tb_empresas.em_logo,
tb_empresas.em_desativada)
VALUES
(:pem_codigo,
:pem_razao_social,
:pem_fantasia,
:pem_cnpj,
:pem_ie,
:pem_im,
:pem_alicota_iss,
:pem_logradouro,
:pem_cep,
:pem_numero,
:pem_complemento,
:pem_codigo_cidade,
:pem_cidade,
:pem_bairro,
:pem_uf,
:pem_home,
:pem_email,
:pem_telefone,
:pem_fax,
:pem_logo,
:pem_desativada);
end
ao tentar executar a mesma
EXECUTE PROCEDURE INSERTUPDATETBEMPRESAS(null, '010203', 'THIAGO RAFAEL TEIXEIRA NOGUEIRA', 'TR SOFTWARES', '00.000.000/000.-00', '123',
'456',1.5, 'RUA JOSÉ ARAÚJO FREIRE', '58417-670', '88', 'CASA', null, 'CAMPINA GRANDE', 'PRESIDENTE MÉDICI', 'PB',
'http://www.trsoftwares.com.br', 'trthiagorafael@gmail.com', '(83)98712-7764', '(83)0000-0000', 'Logo.JPG', 'N')
dá a mensagem
can't format message 13:198 -- message file C:\\Windows\\firebird.msg not found.
arithmetic exception, numeric overflow, or string truncation.
string right truncation.
Algum dos amigos poderiam me ajudar por gentileza
Thiago Nogueira
Posts
09/08/2018
Fernando Duwe
O que está acontecendo, é que durante o seu Insert, algum campo está ultrapassando o tamanho da tabela. Você pode enviar o script de criação da tabela, para poder analisar o tamanho dos campos?
09/08/2018
Thiago Nogueira
CREATE TABLE TB_EMPRESAS (
EM_ID INTEGER NOT NULL,
EM_CODIGO TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_RAZAO_SOCIAL TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_FANTASIA TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_CNPJ TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_IE TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_IM TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_ALICOTA_ISS MONETARIO /* MONETARIO = NUMERIC(15,2) DEFAULT 0.00 NOT NULL */,
EM_LOGRADOURO TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_CEP TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_NUMERO TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_COMPLEMENTO TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_CODIGO_CIDADE INTEGER,
EM_CIDADE TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_BAIRRO TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_UF TIPO_UF DEFAULT 'PB' /* TIPO_UF = CHAR(2) NOT NULL CHECK (VALUE in ('AM', 'AC', 'RR', 'RO', 'AP', 'PA', 'MA', 'PI', 'CE',
'RN', 'PE', 'PB', 'AL', 'SE', 'MT', 'MS', 'GO', 'TO', 'BA', 'MG', 'ES', 'RJ',
'SP', 'PR', 'SC', 'RS', 'DF')) */,
EM_HOME TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_EMAIL TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_TELEFONE TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_FAX TEXTO_EXTRA_CURTO /* TEXTO_EXTRA_CURTO = VARCHAR(15) */,
EM_LOGO TEXTO_GRANDE /* TEXTO_GRANDE = VARCHAR(250) */,
EM_DESATIVADA BOOLEANO /* BOOLEANO = VARCHAR(1) DEFAULT 'N' NOT NULL */
);
/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/
ALTER TABLE TB_EMPRESAS ADD CONSTRAINT PK_TB_EMPRESAS PRIMARY KEY (EM_ID);
/******************************************************************************/
/*** Indices ***/
/******************************************************************************/
CREATE INDEX INDX_CNPJ ON TB_EMPRESAS (EM_CNPJ);
CREATE INDEX INDX_CODIGO ON TB_EMPRESAS (EM_CODIGO);
CREATE INDEX INDX_FANTASIA ON TB_EMPRESAS (EM_FANTASIA);
CREATE INDEX INDX_RAZAO ON TB_EMPRESAS (EM_RAZAO_SOCIAL);
/******************************************************************************/
/*** Triggers ***/
/******************************************************************************/
SET TERM ^ ;
/******************************************************************************/
/*** Triggers for tables ***/
/******************************************************************************/
/* Trigger: TB_EMPRESAS_BI */
CREATE OR ALTER TRIGGER TB_EMPRESAS_BI FOR TB_EMPRESAS
ACTIVE BEFORE INSERT POSITION 0
as
begin
if (new.em_id is null) then
new.em_id = gen_id(gen_tb_empresas_id,1);
end
^
SET TERM ; ^
/******************************************************************************/
/*** Privileges ***/
/******************************************************************************/
09/08/2018
Thiago Nogueira
Clique aqui para fazer login e interagir na Comunidade :)