Fórum Erro em SP : quot;... or string truncationquot; #56336

26/06/2006

0

Colegas :

tenho a seguinte SP :

CREATE PROCEDURE SELECT_CA0500(
    I_COD_COLABORADOR CHAR(15))
RETURNS (
    C_COD_COLABORADOR CHAR(15),
    C_NOME_COLABORADOR VARCHAR(150),
    C_COD_FUNCAO CHAR(15),
    C_ENDERECO_COLABORADOR VARCHAR(100),
    C_COD_LOCAL CHAR(15),
    C_CEP_COLABORADOR CHAR(9),
    C_FONE_COLABORADOR CHAR(14),
    C_CEL_COLABORADOR CHAR(10),
    C_CPF_COLABORADOR CHAR(11),
    C_RG_COLABORADOR CHAR(15),
    C_PIS_COLABORADOR CHAR(13),
    C_CTPS_COLABORADOR CHAR(10),
    C_SERIE_CTPS_COLABORADOR CHAR(10),
    C_VLR_ALIMENTACAO_DIA FLOAT,
    C_VLR_TRANSPORTE_DIA FLOAT,
    C_VLR_REMUNERACAO_COLABORADOR FLOAT,
    C_CNH_COLABORADOR CHAR(11),
    C_CNH_CATEGORIA_COLABORADOR CHAR(2),
    C_CNH_VALIDADE_COLABORADOR DATE,
    C_DATA_ADMISSAO_COLABORADOR DATE,
    C_DATA_DEMISSAO_COLABORADOR DATE,
    C_CESTA_BASICA_COLABORADOR CHAR(1),
    C_TITULO_ELEITOR_COLABORADOR CHAR(15),
    C_TIPO_REMUNERACAO_COLABORADOR CHAR(1),
    C_COD_FORNECEDOR_COLABORADOR CHAR(15),
    C_PAGA_IMPLANTACAO_COLABORADOR CHAR(1),
    C_PAGA_PCT_FECHADO_COLABORADOR CHAR(1),
    C_PERC_PCT_FECHADO_COLABORADOR FLOAT,
    C_VLR_REMUNERACAO_SDF FLOAT,
    C_REGISTRO_AUTONOMO CHAR(10),
    C_COD_LOCAL_REGISTRO_AUTONOMO CHAR(15),
    C_REGISTRO_PROFISSIONAL CHAR(10),
    C_ENTID_REGISTRO_PROFISSIONAL CHAR(100),
    C_COD_OPCAO_RESERVADA CHAR(15),
    C_CARGA_HORARIA TIME,
    C_COD_ESTADO_CIVIL CHAR(15),
    C_JORNADA_INI TIME,
    C_JORNADA_FIM TIME,
    C_TEMPO_ALMOCO TIME,
    C_TEMPO_JANTAR TIME,
    C_TRABALHA_SABADO CHAR(1),
    C_JORNADA_INI_SABADO TIME,
    C_JORNADA_FIM_SABADO TIME,
    C_TEMPO_ALMOCO_SABADO TIME,
    C_TEMPO_JANTAR_SABADO TIME,
    C_TRABALHA_DOMINGO CHAR(1),
    C_JORNADA_INI_DOMINGO TIME,
    C_JORNADA_FIM_DOMINGO TIME,
    C_TEMPO_ALMOCO_DOMINGO TIME,
    C_TEMPO_JANTAR_DOMINGO TIME,
    C_DATA_NASC_COLABORADOR DATE,
    C_ADICIONAL_NOTURNO CHAR(1),
    C_FAIXA_ADICIONAL_NOTURNO CHAR(3),
    C_PERICULOSIDADE CHAR(1),
    C_FAIXA_PERICULOSIDADE CHAR(3),
    C_EMAIL_COLABORADOR VARCHAR(100),
    C_CONTA_COLABORADOR VARCHAR(20),
    C_COD_BANCO CHAR(4),
    C_AGENCIA VARCHAR(10),
    C_TIPO_CONTA_COLABORADOR CHAR(1),
    C_COD_GRAU_INSTRUCAO CHAR(15),
    C_COD_NACIONALIDADE CHAR(15),
    C_FORMA_REMUNERACAO_COLABORADOR CHAR(1),
    C_ESTABILIDADE_COLABORADOR CHAR(1),
    C_AFASTAMENTO_COLABORADOR CHAR(1),
    C_DESC_OPCAO_RESERVADA VARCHAR(100),
    C_NOME_FRN VARCHAR(100),
    C_COD_AFASTAMENTO CHAR(15),
    C_DESC_FUNCAO VARCHAR(100),
    C_DATA_PAG_VT VARCHAR(4),
    C_PERC_ADIANTAMENTO FLOAT)
AS
begin
  for select CA0500.C_COD_COLABORADOR, CA0500.C_NOME_COLABORADOR, CA0500.C_COD_FUNCAO,
    CA0500.C_ENDERECO_COLABORADOR, CA0500.C_COD_LOCAL, CA0500.C_CEP_COLABORADOR,
    CA0500.C_FONE_COLABORADOR, CA0500.C_JORNADA_INI, CA0500.C_JORNADA_FIM,
    CA0500.C_CARGA_HORARIA, CA0500.C_TRABALHA_SABADO, CA0500.C_JORNADA_INI_SABADO,
    CA0500.C_JORNADA_FIM_SABADO, CA0500.C_TEMPO_ALMOCO_SABADO, C_TEMPO_JANTAR_SABADO,
    CA0500.C_TRABALHA_DOMINGO, CA0500.C_JORNADA_INI_DOMINGO, CA0500.C_JORNADA_FIM_DOMINGO,
    CA0500.C_TEMPO_ALMOCO_DOMINGO, CA0500.C_TEMPO_JANTAR_DOMINGO,
    CA0500.C_CEL_COLABORADOR, CA0500.C_CPF_COLABORADOR, CA0500.C_COD_ESTADO_CIVIL,
    CA0500.C_DATA_NASC_COLABORADOR, CA0500.C_ADICIONAL_NOTURNO,
    CA0500.C_FAIXA_ADICIONAL_NOTURNO, CA0500.C_PERICULOSIDADE,
    CA0500.C_FAIXA_PERICULOSIDADE, CA0500.C_DATA_PAG_VT, CA0500.C_PERC_ADIANTAMENTO,
    CA0500.C_RG_COLABORADOR, CA0500.C_PIS_COLABORADOR, CA0500.C_CTPS_COLABORADOR,
    CA0500.C_SERIE_CTPS_COLABORADOR, CA0500.C_VLR_ALIMENTACAO_DIA,
    CA0500.C_VLR_TRANSPORTE_DIA, CA0500.C_TEMPO_ALMOCO, CA0500.C_TEMPO_JANTAR,
    CA0500.C_VLR_REMUNERACAO_COLABORADOR, CA0500.C_CNH_COLABORADOR,
    CA0500.C_CNH_CATEGORIA_COLABORADOR, CA0500.C_CNH_VALIDADE_COLABORADOR,
    CA0500.C_DATA_ADMISSAO_COLABORADOR, CA0500.C_DATA_DEMISSAO_COLABORADOR,
    CA0500.C_CESTA_BASICA_COLABORADOR, CA0500.C_TITULO_ELEITOR_COLABORADOR, 
    CA0500.C_TIPO_REMUNERACAO_COLABORADOR, CA0500.C_COD_FORNECEDOR_COLABORADOR, 
    CA0500.C_PAGA_IMPLANTACAO_COLABORADOR, CA0500.C_PAGA_PCT_FECHADO_COLABORADOR, 
    CA0500.C_PERC_PCT_FECHADO_COLABORADOR, CA0500.C_VLR_REMUNERACAO_SDF, 
    CA0500.C_REGISTRO_AUTONOMO, CA0500.C_COD_LOCAL_REGISTRO_AUTONOMO, 
    CA0500.C_REGISTRO_PROFISSIONAL, CA0500.C_ENTID_REGISTRO_PROFISSIONAL, 
    CA0500.C_COD_OPCAO_RESERVADA, CA0500.C_EMAIL_COLABORADOR, 
    CA0500.C_CONTA_COLABORADOR, CA0500.C_COD_BANCO, CA0500.C_AGENCIA, 
    CA0500.C_TIPO_CONTA_COLABORADOR, CA0500.C_COD_GRAU_INSTRUCAO, 
    CA0500.C_COD_NACIONALIDADE, CA0500.C_FORMA_REMUNERACAO_COLABORADOR, 
    CA0500.C_ESTABILIDADE_COLABORADOR, CA0500.C_AFASTAMENTO_COLABORADOR, 
    CA0500.C_COD_AFASTAMENTO, OP0100.C_DESC_OPCAO_RESERVADA, 
    CA0700.C_DESC_FUNCAO, FR0100.C_NOME_FRN
  from CA0500, CA0700, FR0100, OP0100
  where CA0500.C_COD_FUNCAO = CA0700.C_COD_FUNCAO and
    CA0500.C_COD_FORNECEDOR_COLABORADOR = FR0100.C_COD_FRN and 
    CA0500.C_COD_OPCAO_RESERVADA = OP0100.C_COD_OPCAO_RESERVADA and 
    CA0500.C_COD_COLABORADOR = :I_COD_COLABORADOR
  into
    :C_COD_COLABORADOR, :C_NOME_COLABORADOR, :C_COD_FUNCAO, :C_ENDERECO_COLABORADOR, 
    :C_COD_LOCAL, :C_CEP_COLABORADOR, :C_FONE_COLABORADOR, :C_CEL_COLABORADOR,
    :C_CPF_COLABORADOR, :C_RG_COLABORADOR, :C_PIS_COLABORADOR,
    :C_CTPS_COLABORADOR, :C_SERIE_CTPS_COLABORADOR, :C_VLR_ALIMENTACAO_DIA,
    :C_VLR_TRANSPORTE_DIA, :C_VLR_REMUNERACAO_COLABORADOR, :C_CNH_COLABORADOR,
    :C_CNH_CATEGORIA_COLABORADOR, :C_CNH_VALIDADE_COLABORADOR,
    :C_DATA_ADMISSAO_COLABORADOR, :C_DATA_DEMISSAO_COLABORADOR,
    :C_CESTA_BASICA_COLABORADOR, :C_TITULO_ELEITOR_COLABORADOR,
    :C_TIPO_REMUNERACAO_COLABORADOR, :C_COD_FORNECEDOR_COLABORADOR,
    :C_PAGA_IMPLANTACAO_COLABORADOR, :C_PAGA_PCT_FECHADO_COLABORADOR,
    :C_PERC_PCT_FECHADO_COLABORADOR, :C_VLR_REMUNERACAO_SDF, :C_REGISTRO_AUTONOMO,
    :C_COD_LOCAL_REGISTRO_AUTONOMO, :C_REGISTRO_PROFISSIONAL,
    :C_ENTID_REGISTRO_PROFISSIONAL, :C_COD_OPCAO_RESERVADA, :C_CARGA_HORARIA,
    :C_COD_ESTADO_CIVIL, :C_JORNADA_INI, :C_JORNADA_FIM, :C_TEMPO_ALMOCO,
    :C_TEMPO_JANTAR, :C_TRABALHA_SABADO, :C_JORNADA_INI_SABADO, :C_JORNADA_FIM_SABADO,
    :C_TEMPO_ALMOCO_SABADO, :C_TEMPO_JANTAR_SABADO, :C_TRABALHA_DOMINGO,
    :C_JORNADA_INI_DOMINGO, :C_JORNADA_FIM_DOMINGO, :C_TEMPO_ALMOCO_DOMINGO,
    :C_TEMPO_JANTAR_DOMINGO, :C_DATA_NASC_COLABORADOR, :C_ADICIONAL_NOTURNO,
    :C_FAIXA_ADICIONAL_NOTURNO, :C_PERICULOSIDADE, :C_FAIXA_PERICULOSIDADE,
    :C_EMAIL_COLABORADOR, :C_CONTA_COLABORADOR, :C_COD_BANCO, :C_AGENCIA,
    :C_TIPO_CONTA_COLABORADOR, :C_COD_GRAU_INSTRUCAO, :C_COD_NACIONALIDADE,
    :C_FORMA_REMUNERACAO_COLABORADOR, :C_ESTABILIDADE_COLABORADOR,
    :C_AFASTAMENTO_COLABORADOR, :C_COD_AFASTAMENTO, :C_DATA_PAG_VT, :C_PERC_ADIANTAMENTO,
    :C_DESC_OPCAO_RESERVADA, :C_DESC_FUNCAO, :C_NOME_FRN
  do
  suspend;
end


está retornando o seguinte erro :

´Arithmetic overflow or division by zero has ocurred. Arithmetic exception, numeric overflow, or string truncation´.

Eu sei que este erro pode acontecer por vários motivos, entre eles um campo estar recebendo dados maiores que o suportado, ou indicado..

mas acontece que os tamanhos na SP, são exatos como os do banco de dados... e este select quando executado fora da SP retorna os dados corretamente.

O quê pode estar acontecendo ???????????

Agradeço a todos antecipadamente.


Cabelo

Cabelo

Responder

Posts

27/06/2006

Edilcimar

Talvez esteja colocando caracteres que não são suportados pelo charset, tipo ç, ó, etc


Responder

Gostei + 0

27/06/2006

Cabelo

Colega...

Eu utilizo Charset = WIN1252
e Collate = PXW_INTL850

este select sem SP funciona perfeitamente... já ´roda´ assim...

só dá erro quando eu faço o select na SP...

Tem idéia do que está acontecendo???

grato pela atenção


Responder

Gostei + 0

04/07/2006

Cabelo

Colegas...

a SP do select permanece com o erro... e agora... todas... mas todas as SP de INSERT estão dando o mesmo erro... o problema é que são INSERTs siples... :

CREATE PROCEDURE INSERT_OS0300( I_COD_OS CHAR(15), I_COD_INSUMO CHAR(15), I_QTD FLOAT) RETURNS ( C_SEQ CHAR(4)) AS DECLARE VARIABLE V_SEQ CHAR(4); begin select coalesce(MAX(C_SEQ), 0) from OS0300 where C_COD_OS = ´´|| : I_COD_OS ||´´ into :C_SEQ; select C_RESULTADO from F_Zeros(:C_SEQ, 1, 4) into :V_SEQ; insert into OS0300(C_COD_OS, C_SEQ, C_COD_INSUMO, C_QTD) values (´´|| :I_COD_OS ||´´, ´´|| :V_SEQ ||´´, ´´|| :I_COD_INSUMO ||´´, ´´|| :I_QTD ||´´); end


a SP F_Zeros retorna uma string com zeros á esquerda...

o que está errado???


Responder

Gostei + 0

04/07/2006

Emerson Nascimento

CREATE PROCEDURE INSERT_OS0300( 
  I_COD_OS CHAR(15), 
  I_COD_INSUMO CHAR(15), 
  I_QTD FLOAT) 
RETURNS ( 
  C_SEQ CHAR(4)) 
AS 
DECLARE VARIABLE V_SEQ CHAR(4); 
begin 
  select coalesce(MAX(C_SEQ), 0) 
  from OS0300 
  where C_COD_OS = ´´|| : I_COD_OS ||´´ 
  into :C_SEQ; 

  select C_RESULTADO from F_Zeros(:C_SEQ, 1, 4) into :V_SEQ;

  insert into OS0300(C_COD_OS, C_SEQ, C_COD_INSUMO, C_QTD)
    values (:I_COD_OS, :V_SEQ, :I_COD_INSUMO, :I_QTD);
end
não são necessárias aquelas concatenações.


Responder

Gostei + 0

04/07/2006

Cabelo

Alterei... idêntico ao seu exmplo e continua dando o mesmo erro...

o q pode ser????


Responder

Gostei + 0

04/07/2006

Emerson Nascimento

CREATE PROCEDURE INSERT_OS0300( 
  I_COD_OS CHAR(15), 
  I_COD_INSUMO CHAR(15), 
  I_QTD FLOAT) 
RETURNS ( 
  C_SEQ CHAR(4)) 
AS 
DECLARE VARIABLE V_SEQ CHAR(4); 
begin 
  select coalesce(MAX(C_SEQ), ´´) 
  from OS0300 
  where C_COD_OS = : I_COD_OS
  into :C_SEQ; 

  select C_RESULTADO from F_Zeros(:C_SEQ, 1, 4) into :V_SEQ; 

  insert into OS0300(C_COD_OS, C_SEQ, C_COD_INSUMO, C_QTD) 
    values (:I_COD_OS, :V_SEQ, :I_COD_INSUMO, :I_QTD); 
end


além de alterar a stored procedure de modo a ficar como o exemplo acima, verifique se os campos comportam o conteúdo que você está tentando gravar. a mensagem, além da informação do edilcimar, também significa que você está tentando gravar um valor num campo/variável que não o comporta.


Responder

Gostei + 0

05/07/2006

Cabelo

Muito obrigado Emerson...

o problema foi solucionado

na Table o C_SEQ é um Char(3) e estava tentando gravar Char(4)..

affff.... :( erro primário... desculpa aê..

mas o primeiro select ainda está dando erro..

e já percorri a SP e a table juntas... mas o erro persiste.. sabe o pq?


Responder

Gostei + 0

05/07/2006

Emerson Nascimento

Muito obrigado Emerson... o problema foi solucionado na Table o C_SEQ é um Char(3) e estava tentando gravar Char(4).. affff.... :( erro primário... desculpa aê..
acontece... às vezes estamos com tantos problemas que as coisas simples passam desapercebidas...

mas o primeiro select ainda está dando erro.. e já percorri a SP e a table juntas... mas o erro persiste.. sabe o pq?
qual ´primeiro select´???


Responder

Gostei + 0

05/07/2006

Cabelo

Colegas : tenho a seguinte SP :
CREATE PROCEDURE SELECT_CA0500(
    I_COD_COLABORADOR CHAR(15))
RETURNS (
    C_COD_COLABORADOR CHAR(15),
    C_NOME_COLABORADOR VARCHAR(150),
    C_COD_FUNCAO CHAR(15),
    C_ENDERECO_COLABORADOR VARCHAR(100),
    C_COD_LOCAL CHAR(15),
    C_CEP_COLABORADOR CHAR(9),
    C_FONE_COLABORADOR CHAR(14),
    C_CEL_COLABORADOR CHAR(10),
    C_CPF_COLABORADOR CHAR(11),
    C_RG_COLABORADOR CHAR(15),
    C_PIS_COLABORADOR CHAR(13),
    C_CTPS_COLABORADOR CHAR(10),
    C_SERIE_CTPS_COLABORADOR CHAR(10),
    C_VLR_ALIMENTACAO_DIA FLOAT,
    C_VLR_TRANSPORTE_DIA FLOAT,
    C_VLR_REMUNERACAO_COLABORADOR FLOAT,
    C_CNH_COLABORADOR CHAR(11),
    C_CNH_CATEGORIA_COLABORADOR CHAR(2),
    C_CNH_VALIDADE_COLABORADOR DATE,
    C_DATA_ADMISSAO_COLABORADOR DATE,
    C_DATA_DEMISSAO_COLABORADOR DATE,
    C_CESTA_BASICA_COLABORADOR CHAR(1),
    C_TITULO_ELEITOR_COLABORADOR CHAR(15),
    C_TIPO_REMUNERACAO_COLABORADOR CHAR(1),
    C_COD_FORNECEDOR_COLABORADOR CHAR(15),
    C_PAGA_IMPLANTACAO_COLABORADOR CHAR(1),
    C_PAGA_PCT_FECHADO_COLABORADOR CHAR(1),
    C_PERC_PCT_FECHADO_COLABORADOR FLOAT,
    C_VLR_REMUNERACAO_SDF FLOAT,
    C_REGISTRO_AUTONOMO CHAR(10),
    C_COD_LOCAL_REGISTRO_AUTONOMO CHAR(15),
    C_REGISTRO_PROFISSIONAL CHAR(10),
    C_ENTID_REGISTRO_PROFISSIONAL CHAR(100),
    C_COD_OPCAO_RESERVADA CHAR(15),
    C_CARGA_HORARIA TIME,
    C_COD_ESTADO_CIVIL CHAR(15),
    C_JORNADA_INI TIME,
    C_JORNADA_FIM TIME,
    C_TEMPO_ALMOCO TIME,
    C_TEMPO_JANTAR TIME,
    C_TRABALHA_SABADO CHAR(1),
    C_JORNADA_INI_SABADO TIME,
    C_JORNADA_FIM_SABADO TIME,
    C_TEMPO_ALMOCO_SABADO TIME,
    C_TEMPO_JANTAR_SABADO TIME,
    C_TRABALHA_DOMINGO CHAR(1),
    C_JORNADA_INI_DOMINGO TIME,
    C_JORNADA_FIM_DOMINGO TIME,
    C_TEMPO_ALMOCO_DOMINGO TIME,
    C_TEMPO_JANTAR_DOMINGO TIME,
    C_DATA_NASC_COLABORADOR DATE,
    C_ADICIONAL_NOTURNO CHAR(1),
    C_FAIXA_ADICIONAL_NOTURNO CHAR(3),
    C_PERICULOSIDADE CHAR(1),
    C_FAIXA_PERICULOSIDADE CHAR(3),
    C_EMAIL_COLABORADOR VARCHAR(100),
    C_CONTA_COLABORADOR VARCHAR(20),
    C_COD_BANCO CHAR(4),
    C_AGENCIA VARCHAR(10),
    C_TIPO_CONTA_COLABORADOR CHAR(1),
    C_COD_GRAU_INSTRUCAO CHAR(15),
    C_COD_NACIONALIDADE CHAR(15),
    C_FORMA_REMUNERACAO_COLABORADOR CHAR(1),
    C_ESTABILIDADE_COLABORADOR CHAR(1),
    C_AFASTAMENTO_COLABORADOR CHAR(1),
    C_DESC_OPCAO_RESERVADA VARCHAR(100),
    C_NOME_FRN VARCHAR(100),
    C_COD_AFASTAMENTO CHAR(15),
    C_DESC_FUNCAO VARCHAR(100),
    C_DATA_PAG_VT VARCHAR(4),
    C_PERC_ADIANTAMENTO FLOAT)
AS
begin
  for select CA0500.C_COD_COLABORADOR, CA0500.C_NOME_COLABORADOR, CA0500.C_COD_FUNCAO,
    CA0500.C_ENDERECO_COLABORADOR, CA0500.C_COD_LOCAL, CA0500.C_CEP_COLABORADOR,
    CA0500.C_FONE_COLABORADOR, CA0500.C_JORNADA_INI, CA0500.C_JORNADA_FIM,
    CA0500.C_CARGA_HORARIA, CA0500.C_TRABALHA_SABADO, CA0500.C_JORNADA_INI_SABADO,
    CA0500.C_JORNADA_FIM_SABADO, CA0500.C_TEMPO_ALMOCO_SABADO, C_TEMPO_JANTAR_SABADO,
    CA0500.C_TRABALHA_DOMINGO, CA0500.C_JORNADA_INI_DOMINGO, CA0500.C_JORNADA_FIM_DOMINGO,
    CA0500.C_TEMPO_ALMOCO_DOMINGO, CA0500.C_TEMPO_JANTAR_DOMINGO,
    CA0500.C_CEL_COLABORADOR, CA0500.C_CPF_COLABORADOR, CA0500.C_COD_ESTADO_CIVIL,
    CA0500.C_DATA_NASC_COLABORADOR, CA0500.C_ADICIONAL_NOTURNO,
    CA0500.C_FAIXA_ADICIONAL_NOTURNO, CA0500.C_PERICULOSIDADE,
    CA0500.C_FAIXA_PERICULOSIDADE, CA0500.C_DATA_PAG_VT, CA0500.C_PERC_ADIANTAMENTO,
    CA0500.C_RG_COLABORADOR, CA0500.C_PIS_COLABORADOR, CA0500.C_CTPS_COLABORADOR,
    CA0500.C_SERIE_CTPS_COLABORADOR, CA0500.C_VLR_ALIMENTACAO_DIA,
    CA0500.C_VLR_TRANSPORTE_DIA, CA0500.C_TEMPO_ALMOCO, CA0500.C_TEMPO_JANTAR,
    CA0500.C_VLR_REMUNERACAO_COLABORADOR, CA0500.C_CNH_COLABORADOR,
    CA0500.C_CNH_CATEGORIA_COLABORADOR, CA0500.C_CNH_VALIDADE_COLABORADOR,
    CA0500.C_DATA_ADMISSAO_COLABORADOR, CA0500.C_DATA_DEMISSAO_COLABORADOR,
    CA0500.C_CESTA_BASICA_COLABORADOR, CA0500.C_TITULO_ELEITOR_COLABORADOR, 
    CA0500.C_TIPO_REMUNERACAO_COLABORADOR, CA0500.C_COD_FORNECEDOR_COLABORADOR, 
    CA0500.C_PAGA_IMPLANTACAO_COLABORADOR, CA0500.C_PAGA_PCT_FECHADO_COLABORADOR, 
    CA0500.C_PERC_PCT_FECHADO_COLABORADOR, CA0500.C_VLR_REMUNERACAO_SDF, 
    CA0500.C_REGISTRO_AUTONOMO, CA0500.C_COD_LOCAL_REGISTRO_AUTONOMO, 
    CA0500.C_REGISTRO_PROFISSIONAL, CA0500.C_ENTID_REGISTRO_PROFISSIONAL, 
    CA0500.C_COD_OPCAO_RESERVADA, CA0500.C_EMAIL_COLABORADOR, 
    CA0500.C_CONTA_COLABORADOR, CA0500.C_COD_BANCO, CA0500.C_AGENCIA, 
    CA0500.C_TIPO_CONTA_COLABORADOR, CA0500.C_COD_GRAU_INSTRUCAO, 
    CA0500.C_COD_NACIONALIDADE, CA0500.C_FORMA_REMUNERACAO_COLABORADOR, 
    CA0500.C_ESTABILIDADE_COLABORADOR, CA0500.C_AFASTAMENTO_COLABORADOR, 
    CA0500.C_COD_AFASTAMENTO, OP0100.C_DESC_OPCAO_RESERVADA, 
    CA0700.C_DESC_FUNCAO, FR0100.C_NOME_FRN
  from CA0500, CA0700, FR0100, OP0100
  where CA0500.C_COD_FUNCAO = CA0700.C_COD_FUNCAO and
    CA0500.C_COD_FORNECEDOR_COLABORADOR = FR0100.C_COD_FRN and 
    CA0500.C_COD_OPCAO_RESERVADA = OP0100.C_COD_OPCAO_RESERVADA and 
    CA0500.C_COD_COLABORADOR = :I_COD_COLABORADOR
  into
    :C_COD_COLABORADOR, :C_NOME_COLABORADOR, :C_COD_FUNCAO, :C_ENDERECO_COLABORADOR, 
    :C_COD_LOCAL, :C_CEP_COLABORADOR, :C_FONE_COLABORADOR, :C_CEL_COLABORADOR,
    :C_CPF_COLABORADOR, :C_RG_COLABORADOR, :C_PIS_COLABORADOR,
    :C_CTPS_COLABORADOR, :C_SERIE_CTPS_COLABORADOR, :C_VLR_ALIMENTACAO_DIA,
    :C_VLR_TRANSPORTE_DIA, :C_VLR_REMUNERACAO_COLABORADOR, :C_CNH_COLABORADOR,
    :C_CNH_CATEGORIA_COLABORADOR, :C_CNH_VALIDADE_COLABORADOR,
    :C_DATA_ADMISSAO_COLABORADOR, :C_DATA_DEMISSAO_COLABORADOR,
    :C_CESTA_BASICA_COLABORADOR, :C_TITULO_ELEITOR_COLABORADOR,
    :C_TIPO_REMUNERACAO_COLABORADOR, :C_COD_FORNECEDOR_COLABORADOR,
    :C_PAGA_IMPLANTACAO_COLABORADOR, :C_PAGA_PCT_FECHADO_COLABORADOR,
    :C_PERC_PCT_FECHADO_COLABORADOR, :C_VLR_REMUNERACAO_SDF, :C_REGISTRO_AUTONOMO,
    :C_COD_LOCAL_REGISTRO_AUTONOMO, :C_REGISTRO_PROFISSIONAL,
    :C_ENTID_REGISTRO_PROFISSIONAL, :C_COD_OPCAO_RESERVADA, :C_CARGA_HORARIA,
    :C_COD_ESTADO_CIVIL, :C_JORNADA_INI, :C_JORNADA_FIM, :C_TEMPO_ALMOCO,
    :C_TEMPO_JANTAR, :C_TRABALHA_SABADO, :C_JORNADA_INI_SABADO, :C_JORNADA_FIM_SABADO,
    :C_TEMPO_ALMOCO_SABADO, :C_TEMPO_JANTAR_SABADO, :C_TRABALHA_DOMINGO,
    :C_JORNADA_INI_DOMINGO, :C_JORNADA_FIM_DOMINGO, :C_TEMPO_ALMOCO_DOMINGO,
    :C_TEMPO_JANTAR_DOMINGO, :C_DATA_NASC_COLABORADOR, :C_ADICIONAL_NOTURNO,
    :C_FAIXA_ADICIONAL_NOTURNO, :C_PERICULOSIDADE, :C_FAIXA_PERICULOSIDADE,
    :C_EMAIL_COLABORADOR, :C_CONTA_COLABORADOR, :C_COD_BANCO, :C_AGENCIA,
    :C_TIPO_CONTA_COLABORADOR, :C_COD_GRAU_INSTRUCAO, :C_COD_NACIONALIDADE,
    :C_FORMA_REMUNERACAO_COLABORADOR, :C_ESTABILIDADE_COLABORADOR,
    :C_AFASTAMENTO_COLABORADOR, :C_COD_AFASTAMENTO, :C_DATA_PAG_VT, :C_PERC_ADIANTAMENTO,
    :C_DESC_OPCAO_RESERVADA, :C_DESC_FUNCAO, :C_NOME_FRN
  do
  suspend;
end
está retornando o seguinte erro : ´Arithmetic overflow or division by zero has ocurred. Arithmetic exception, numeric overflow, or string truncation´. Eu sei que este erro pode acontecer por vários motivos, entre eles um campo estar recebendo dados maiores que o suportado, ou indicado.. mas acontece que os tamanhos na SP, são exatos como os do banco de dados... e este select quando executado fora da SP retorna os dados corretamente. O quê pode estar acontecendo ??????????? Agradeço a todos antecipadamente.


O do início do tópico...


Responder

Gostei + 0

05/07/2006

Emerson Nascimento

publique a estrutura das tabelas envolvidas nessa instrução (CA0500, CA0700, FR0100, OP0100).


Responder

Gostei + 0

05/07/2006

Cabelo

segue abaixo :

CA0500

CREATE TABLE CA0500 ( C_COD_COLABORADOR CHAR(15) NOT NULL COLLATE PXW_INTL850, C_NOME_COLABORADOR VARCHAR(150) NOT NULL COLLATE PXW_INTL850, C_COD_FUNCAO CHAR(15) NOT NULL COLLATE PXW_INTL850, C_ENDERECO_COLABORADOR VARCHAR(100) COLLATE PXW_INTL850, C_COD_LOCAL CHAR(15) COLLATE PXW_INTL850, C_CEP_COLABORADOR CHAR(9) COLLATE PXW_INTL850, C_FONE_COLABORADOR CHAR(14) COLLATE PXW_INTL850, C_CEL_COLABORADOR CHAR(10) COLLATE PXW_INTL850, C_CPF_COLABORADOR CHAR(11) COLLATE PXW_INTL850, C_RG_COLABORADOR CHAR(15) COLLATE PXW_INTL850, C_PIS_COLABORADOR CHAR(13) COLLATE PXW_INTL850, C_CTPS_COLABORADOR CHAR(10) COLLATE PXW_INTL850, C_SERIE_CTPS_COLABORADOR CHAR(10) COLLATE PXW_INTL850, C_VLR_ALIMENTACAO_DIA FLOAT, C_VLR_TRANSPORTE_DIA FLOAT, C_VLR_REMUNERACAO_COLABORADOR FLOAT, C_CNH_COLABORADOR CHAR(11) COLLATE PXW_INTL850, C_CNH_CATEGORIA_COLABORADOR CHAR(2) COLLATE PXW_INTL850, C_CNH_VALIDADE_COLABORADOR DATE, C_DATA_ADMISSAO_COLABORADOR DATE, C_DATA_DEMISSAO_COLABORADOR DATE, C_OBS_COLABORADOR BLOB SUB_TYPE 0 SEGMENT SIZE 80, C_CESTA_BASICA_COLABORADOR CHAR(1) COLLATE PXW_INTL850, C_TITULO_ELEITOR_COLABORADOR CHAR(15) COLLATE PXW_INTL850, C_TIPO_REMUNERACAO_COLABORADOR CHAR(1) COLLATE PXW_INTL850, C_COD_FORNECEDOR_COLABORADOR CHAR(15) NOT NULL COLLATE PXW_INTL850, C_PAGA_IMPLANTACAO_COLABORADOR CHAR(1) COLLATE PXW_INTL850, C_PAGA_PCT_FECHADO_COLABORADOR CHAR(1) COLLATE PXW_INTL850, C_PERC_PCT_FECHADO_COLABORADOR FLOAT, C_VLR_REMUNERACAO_SDF FLOAT, C_REGISTRO_AUTONOMO CHAR(10) COLLATE PXW_INTL850, C_COD_LOCAL_REGISTRO_AUTONOMO CHAR(15) COLLATE PXW_INTL850, C_REGISTRO_PROFISSIONAL CHAR(10) COLLATE PXW_INTL850, C_ENTID_REGISTRO_PROFISSIONAL CHAR(100) COLLATE PXW_INTL850, C_FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80, C_COD_OPCAO_RESERVADA CHAR(15) NOT NULL COLLATE PXW_INTL850, C_CARGA_HORARIA TIME NOT NULL, C_COD_ESTADO_CIVIL CHAR(15) COLLATE PXW_INTL850, C_JORNADA_INI TIME NOT NULL, C_JORNADA_FIM TIME NOT NULL, C_TEMPO_ALMOCO TIME, C_TEMPO_JANTAR TIME, C_TRABALHA_SABADO CHAR(1) NOT NULL COLLATE PXW_INTL850, C_JORNADA_INI_SABADO TIME, C_JORNADA_FIM_SABADO TIME, C_TEMPO_ALMOCO_SABADO TIME, C_TEMPO_JANTAR_SABADO TIME, C_TRABALHA_DOMINGO CHAR(1) NOT NULL COLLATE PXW_INTL850, C_JORNADA_INI_DOMINGO TIME, C_JORNADA_FIM_DOMINGO TIME, C_TEMPO_ALMOCO_DOMINGO TIME, C_TEMPO_JANTAR_DOMINGO TIME, C_DATA_NASC_COLABORADOR DATE, C_ADICIONAL_NOTURNO CHAR(1) NOT NULL COLLATE PXW_INTL850, C_FAIXA_ADICIONAL_NOTURNO CHAR(3) COLLATE PXW_INTL850, C_PERICULOSIDADE CHAR(1) NOT NULL COLLATE PXW_INTL850, C_FAIXA_PERICULOSIDADE CHAR(3) COLLATE PXW_INTL850, C_EMAIL_COLABORADOR VARCHAR(100) COLLATE PXW_INTL850, C_CONTA_COLABORADOR VARCHAR(20) COLLATE PXW_INTL850, C_COD_BANCO CHAR(4) COLLATE PXW_INTL850, C_AGENCIA VARCHAR(10) COLLATE PXW_INTL850, C_TIPO_CONTA_COLABORADOR CHAR(1) COLLATE PXW_INTL850, C_COD_GRAU_INSTRUCAO CHAR(15) NOT NULL COLLATE PXW_INTL850, C_COD_NACIONALIDADE CHAR(15) NOT NULL COLLATE PXW_INTL850, C_FORMA_REMUNERACAO_COLABORADOR CHAR(1) NOT NULL COLLATE PXW_INTL850, C_ESTABILIDADE_COLABORADOR CHAR(1) NOT NULL COLLATE PXW_INTL850, C_OBS_ESTABILIDADE_COLABORADOR BLOB SUB_TYPE 1 SEGMENT SIZE 4096, C_AFASTAMENTO_COLABORADOR CHAR(1) NOT NULL COLLATE PXW_INTL850, C_COD_AFASTAMENTO CHAR(15) COLLATE PXW_INTL850, C_DATA_PAG_VT VARCHAR(4) NOT NULL COLLATE PXW_INTL850, C_PERC_ADIANTAMENTO FLOAT NOT NULL ); ALTER TABLE CA0500 ADD CONSTRAINT PK_CA0500 PRIMARY KEY (C_COD_COLABORADOR); CREATE INDEX CA0500_IDX1 ON CA0500 (C_COD_COLABORADOR);


CA0700

CREATE TABLE CA0700 ( C_COD_FUNCAO CHAR(15) NOT NULL COLLATE PXW_INTL850, C_DESC_FUNCAO VARCHAR(100) NOT NULL COLLATE PXW_INTL850, C_TIPO_FUNCAO CHAR(1) COLLATE PXW_INTL850, C_INSALUBRIDADE CHAR(1) NOT NULL, C_FAIXA_INSALUBRIDADE CHAR(3) NOT NULL, C_CBO VARCHAR(6) NOT NULL COLLATE PXW_INTL850 ); ALTER TABLE CA0700 ADD CONSTRAINT PK_CA0700 PRIMARY KEY (C_COD_FUNCAO); CREATE INDEX CA0700_IDX1 ON CA0700 (C_COD_FUNCAO);


FR0100

CREATE TABLE FR0100 ( C_COD_FRN CHAR(15) NOT NULL, C_NOME_FRN VARCHAR(100), C_FANTASIA_FRN CHAR(25), C_END_FRN VARCHAR(100), C_CEP_FRN CHAR(9), C_FONE1_FRN CHAR(14), C_FONE2_FRN CHAR(14), C_FAX_FRN CHAR(14), C_EMAIL_FRN VARCHAR(100), C_HPAGE_FRN VARCHAR(100), C_TIPO_FRN CHAR(1), C_CNPJ_CPF_FRN CHAR(18), C_IE_RG_FRN CHAR(18), C_DTA_CAD_FRN DATE, C_OBS_FRN BLOB SUB_TYPE 0 SEGMENT SIZE 80, C_PESSOA_TIPO CHAR(1), C_COD_LOCAL_FRN CHAR(15) COLLATE PXW_INTL850 ); ALTER TABLE FR0100 ADD CONSTRAINT PK_FR0100 PRIMARY KEY (C_COD_FRN);


OP0100

CREATE TABLE OP0100 ( C_COD_OPCAO_RESERVADA CHAR(15) NOT NULL COLLATE PXW_INTL850, C_DESC_OPCAO_RESERVADA VARCHAR(100) NOT NULL COLLATE PXW_INTL850 ); ALTER TABLE OP0100 ADD CONSTRAINT PK_OP0100 PRIMARY KEY (C_COD_OPCAO_RESERVADA);


Agradeço muito sua atenção...


Responder

Gostei + 0

05/07/2006

Emerson Nascimento

tente com view. creio que nesse caso seja o mais indicado.
create view vwSELECT_CA0500 ( C_COD_COLABORADOR, C_NOME_COLABORADOR, C_COD_FUNCAO,
    C_ENDERECO_COLABORADOR, C_COD_LOCAL, C_CEP_COLABORADOR,
    C_FONE_COLABORADOR, C_JORNADA_INI, C_JORNADA_FIM,
    C_CARGA_HORARIA, C_TRABALHA_SABADO, C_JORNADA_INI_SABADO,
    C_JORNADA_FIM_SABADO, C_TEMPO_ALMOCO_SABADO, C_TEMPO_JANTAR_SABADO,
    C_TRABALHA_DOMINGO, C_JORNADA_INI_DOMINGO, C_JORNADA_FIM_DOMINGO,
    C_TEMPO_ALMOCO_DOMINGO, C_TEMPO_JANTAR_DOMINGO,
    C_CEL_COLABORADOR, C_CPF_COLABORADOR, C_COD_ESTADO_CIVIL,
    C_DATA_NASC_COLABORADOR, C_ADICIONAL_NOTURNO,
    C_FAIXA_ADICIONAL_NOTURNO, C_PERICULOSIDADE,
    C_FAIXA_PERICULOSIDADE, C_DATA_PAG_VT, C_PERC_ADIANTAMENTO,
    C_RG_COLABORADOR, C_PIS_COLABORADOR, C_CTPS_COLABORADOR,
    C_SERIE_CTPS_COLABORADOR, C_VLR_ALIMENTACAO_DIA,
    C_VLR_TRANSPORTE_DIA, C_TEMPO_ALMOCO, C_TEMPO_JANTAR,
    C_VLR_REMUNERACAO_COLABORADOR, C_CNH_COLABORADOR,
    C_CNH_CATEGORIA_COLABORADOR, C_CNH_VALIDADE_COLABORADOR,
    C_DATA_ADMISSAO_COLABORADOR, C_DATA_DEMISSAO_COLABORADOR,
    C_CESTA_BASICA_COLABORADOR, C_TITULO_ELEITOR_COLABORADOR,
    C_TIPO_REMUNERACAO_COLABORADOR, C_COD_FORNECEDOR_COLABORADOR,
    C_PAGA_IMPLANTACAO_COLABORADOR, C_PAGA_PCT_FECHADO_COLABORADOR,
    C_PERC_PCT_FECHADO_COLABORADOR, C_VLR_REMUNERACAO_SDF,
    C_REGISTRO_AUTONOMO, C_COD_LOCAL_REGISTRO_AUTONOMO,
    C_REGISTRO_PROFISSIONAL, C_ENTID_REGISTRO_PROFISSIONAL,
    C_COD_OPCAO_RESERVADA, C_EMAIL_COLABORADOR,
    C_CONTA_COLABORADOR, C_COD_BANCO, C_AGENCIA,
    C_TIPO_CONTA_COLABORADOR, C_COD_GRAU_INSTRUCAO,
    C_COD_NACIONALIDADE, C_FORMA_REMUNERACAO_COLABORADOR,
    C_ESTABILIDADE_COLABORADOR, C_AFASTAMENTO_COLABORADOR,
    C_COD_AFASTAMENTO, C_DESC_OPCAO_RESERVADA,
    C_DESC_FUNCAO, C_NOME_FRN
)
as
select CA0500.C_COD_COLABORADOR, CA0500.C_NOME_COLABORADOR, CA0500.C_COD_FUNCAO,
    CA0500.C_ENDERECO_COLABORADOR, CA0500.C_COD_LOCAL, CA0500.C_CEP_COLABORADOR, 
    CA0500.C_FONE_COLABORADOR, CA0500.C_JORNADA_INI, CA0500.C_JORNADA_FIM, 
    CA0500.C_CARGA_HORARIA, CA0500.C_TRABALHA_SABADO, CA0500.C_JORNADA_INI_SABADO, 
    CA0500.C_JORNADA_FIM_SABADO, CA0500.C_TEMPO_ALMOCO_SABADO, C_TEMPO_JANTAR_SABADO, 
    CA0500.C_TRABALHA_DOMINGO, CA0500.C_JORNADA_INI_DOMINGO, CA0500.C_JORNADA_FIM_DOMINGO, 
    CA0500.C_TEMPO_ALMOCO_DOMINGO, CA0500.C_TEMPO_JANTAR_DOMINGO, 
    CA0500.C_CEL_COLABORADOR, CA0500.C_CPF_COLABORADOR, CA0500.C_COD_ESTADO_CIVIL, 
    CA0500.C_DATA_NASC_COLABORADOR, CA0500.C_ADICIONAL_NOTURNO, 
    CA0500.C_FAIXA_ADICIONAL_NOTURNO, CA0500.C_PERICULOSIDADE, 
    CA0500.C_FAIXA_PERICULOSIDADE, CA0500.C_DATA_PAG_VT, CA0500.C_PERC_ADIANTAMENTO, 
    CA0500.C_RG_COLABORADOR, CA0500.C_PIS_COLABORADOR, CA0500.C_CTPS_COLABORADOR, 
    CA0500.C_SERIE_CTPS_COLABORADOR, CA0500.C_VLR_ALIMENTACAO_DIA, 
    CA0500.C_VLR_TRANSPORTE_DIA, CA0500.C_TEMPO_ALMOCO, CA0500.C_TEMPO_JANTAR, 
    CA0500.C_VLR_REMUNERACAO_COLABORADOR, CA0500.C_CNH_COLABORADOR, 
    CA0500.C_CNH_CATEGORIA_COLABORADOR, CA0500.C_CNH_VALIDADE_COLABORADOR, 
    CA0500.C_DATA_ADMISSAO_COLABORADOR, CA0500.C_DATA_DEMISSAO_COLABORADOR, 
    CA0500.C_CESTA_BASICA_COLABORADOR, CA0500.C_TITULO_ELEITOR_COLABORADOR, 
    CA0500.C_TIPO_REMUNERACAO_COLABORADOR, CA0500.C_COD_FORNECEDOR_COLABORADOR, 
    CA0500.C_PAGA_IMPLANTACAO_COLABORADOR, CA0500.C_PAGA_PCT_FECHADO_COLABORADOR, 
    CA0500.C_PERC_PCT_FECHADO_COLABORADOR, CA0500.C_VLR_REMUNERACAO_SDF, 
    CA0500.C_REGISTRO_AUTONOMO, CA0500.C_COD_LOCAL_REGISTRO_AUTONOMO, 
    CA0500.C_REGISTRO_PROFISSIONAL, CA0500.C_ENTID_REGISTRO_PROFISSIONAL, 
    CA0500.C_COD_OPCAO_RESERVADA, CA0500.C_EMAIL_COLABORADOR, 
    CA0500.C_CONTA_COLABORADOR, CA0500.C_COD_BANCO, CA0500.C_AGENCIA, 
    CA0500.C_TIPO_CONTA_COLABORADOR, CA0500.C_COD_GRAU_INSTRUCAO, 
    CA0500.C_COD_NACIONALIDADE, CA0500.C_FORMA_REMUNERACAO_COLABORADOR, 
    CA0500.C_ESTABILIDADE_COLABORADOR, CA0500.C_AFASTAMENTO_COLABORADOR, 
    CA0500.C_COD_AFASTAMENTO, OP0100.C_DESC_OPCAO_RESERVADA, 
    CA0700.C_DESC_FUNCAO, FR0100.C_NOME_FRN 
from CA0500
inner join CA0700 on (CA0700.C_COD_FUNCAO = CA0500.C_COD_FUNCAO)
inner join FR0100 on (FR0100.C_COD_FRN = CA0500.C_COD_FORNECEDOR_COLABORADOR)
inner join OP0100 on (OP0100.C_COD_OPCAO_RESERVADA = CA0500.C_COD_OPCAO_RESERVADA)

aí você usa assim:
select * from vwselect_ca0500 where C_COD_COLABORADOR = 1

note que, como a view é uma tabela virtual, você pode selecionar quais campos quiser daquela lista colocada como retorno.
poderia ser, por exemplo:
select
  C_NOME_COLABORADOR,
  C_COD_FUNCAO, C_DESC_FUNCAO,
  C_FONE_COLABORADOR, C_CEL_COLABORADOR,
  C_JORNADA_INI, C_JORNADA_FIM,
  C_TRABALHA_SABADO, C_TRABALHA_DOMINGO,
  C_EMAIL_COLABORADOR, C_COD_NACIONALIDADE,
from vwselect_ca0500
where C_COD_COLABORADOR = 1



Responder

Gostei + 0

05/07/2006

Cabelo

Qual é a diferença entre View e SP...

Lembre-se que estou alterando todo o meu sistema para SP, por causa da velocidade via Internet..

portanto se a view for tão lenta quanto direto do delphi... não posso usár..

mas por favor me responda uma coisa...

pq as outras SP de select funcionaram bem e essa não..???

pq usar view ao invés de SP?????

obrigado pela atenção..


Responder

Gostei + 0

05/07/2006

Emerson Nascimento

numa stored procedure você executa comandos diversos. ela serve para você programar diretamente no banco de dados.

já uma view nada mais é do que o resultado de uma instrução select (que pode ser editável). sempre que você tiver um select repetitivo, usado em vários lugares, é melhor que se monte a view ao invés de executar a instrução a cada vez que ela é necessária.

e, como no seu caso não há qualquer tipo de processamento, eu recomendo o uso da view.

obs.: não avaliei o porque da stored procedure não funcionar, porque na minha máquina ela funcionou perfeitamente. não fui mais a fundo porque acho que o seu problema se resolve com a view.


Responder

Gostei + 0

05/07/2006

Cabelo

Então por não ter processamento nenhum... o problema da velocidade irá permanecer... mesmo direto do delphi...

esse select tem muitos campos... portanto fica muito lenta quando tento abrir o cadastro de colaboradores... mesmo local... na Internet nem abre..

o q posso fazer para melhorar a performance????


Responder

Gostei + 0

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

Aceitar