MRMB Postado Fevereiro 13, 2012 Denunciar Share Postado Fevereiro 13, 2012 Pessoal,Estou tentanto fazer o seguinte em uma procedure para facilitar uma possível manuntenção.Declaro uma variável que irá contém o tamanho do campo. E depois tento declarar uma segunda variável com base no tamanho da primeira variável.DECLARE @TAMANHO_FIXO INTEGER SET @TAMANHO_FIXO = 02 DECLARE @FIXO VARCHAR (@TAMANHO_FIXO)Assim caso alterar o tamanho do campo "FIXO" eu altero somente o SET da variável "@TAMANHO_FIXO".O problema é que ocorre erro de sintaxe incorreta devido a tipo na linha "DECLARE @FIXO VARCHAR (@TAMANHO_FIXO)". Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 13, 2012 Denunciar Share Postado Fevereiro 13, 2012 Boa tarde Cleiton, Desculpe pela pergunta, mas por que deseja fazer um campo de tamanho variável? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MRMB Postado Fevereiro 14, 2012 Autor Denunciar Share Postado Fevereiro 14, 2012 fulvio,No caso essa procedure realiza várias operações nos campos de uma consulta utilizando as funções REPLICATE e SUBSTRING. Essas alterações são realizadas com base em um layout pré-definido de um terceiro. Ao terminar o processo na procedure retornar conjuntos de linhas do arquivo a ser gerado já formatado.Imagine um campo hoje de tamanho 7 do tipo inteiro com valor 456 o tratamento e feito abaixo:REPLICATE('0', 7 - LEN(SUBSTRING(CAMPO, 1, 7) ) + SUBSTRING(CAMPO, 1, 7) Resultado: 0000456Isso para cada campo e assim gero a linha que incluo em uma tabela e depois retorno essa tabela.Todavia o campo hoje com tamanho 7 pode ser 10 mês que vem. E seria interessante que estive em uma variável o valor do tamanho do campo para facilitar a manutenção. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 14, 2012 Denunciar Share Postado Fevereiro 14, 2012 Bom dia Cleiton, Ok, entendido... rs. Mas não seria mais interessante passar o tamanho do campo e fazer a manipulação com este valor? As vezes o exemplo abaixo possa ajudar...DECLARE @TAMANHO_FIXO INTEGER SET @TAMANHO_FIXO = 7 SELECT REPLICATE('0', @TAMANHO_FIXO - LEN(456)) + CAST(456 AS varchar) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MRMB Postado Fevereiro 14, 2012 Autor Denunciar Share Postado Fevereiro 14, 2012 fulvio,Essa é a intenção o problema é o seguinte. Tenho um curso no meu processo e a cada loop inseri uma linha em uma tabela.E essa tabela temporária e composta pelos campos do layout pré-definido.DECLARE @TAMANHO_FIXO INTEGER SET @TAMANHO_FIXO = 02 DECLARE @LAYOUT TABLE ( FIXO VARCHAR(@TAMANHO_FIXO) -- Erro. ) SELECT REPLICATE('0', @TAMANHO_FIXO - LEN(456)) + CAST(456 AS varchar) -- CURSOR -- Inclusão na tabela.Assim caso a declaração da tabela aceitar o @TAMANHO_FIXO ficaria fácil dar a manutenção.Como mencionou se usar a variável funcionaria. Contudo, sempre precisaria alterar o valor da variável @TAMANHO_FIXO e a declaração da tabela.c Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Fevereiro 14, 2012 Denunciar Share Postado Fevereiro 14, 2012 Bom dia Cleiton, Desta forma não tem como fazer.... mesmo criando uma variável e tentando executar o string. você pode criar a coluna como varchar que comporte "todos" os formatos de tamanhos. Aí a manipulação será de acordo com os dados inseridos. Dados com 7 posições teria o @TAMANHO_FIXO = 7, por exemplo... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 MRMB Postado Fevereiro 14, 2012 Autor Denunciar Share Postado Fevereiro 14, 2012 fulvio,Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
MRMB
Pessoal,
Estou tentanto fazer o seguinte em uma procedure para facilitar uma possível manuntenção.
Declaro uma variável que irá contém o tamanho do campo. E depois tento declarar uma segunda variável com base no tamanho da primeira variável.
Assim caso alterar o tamanho do campo "FIXO" eu altero somente o SET da variável "@TAMANHO_FIXO".
O problema é que ocorre erro de sintaxe incorreta devido a tipo na linha "DECLARE @FIXO VARCHAR (@TAMANHO_FIXO)".
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.