Select Insert Into não roda, dá erro
Fiz esse select e está dando erro. Qual é o erro? O que falta nele?
select 'INSERT INTO CONHECIMENTO_CARGA VALUES('+ Convert(varchar(6),cod_indice))+','+titulo+','+
tipo+','+convert(varchar(6),num_max)+','+aplicacao+','+mascara+','+convert(varchar(6),qtd_caracter)+
')' from indice
Pjava
Curtidas 0
Respostas
Marco Pinheiro
26/07/2011
PJava,
Informe qual o erro ocorre na execução.
Lembrando que todos os campos envolvidos nesta consulta devem ser VARCHAR ou CHAR.
Att.,
Marco.
Informe qual o erro ocorre na execução.
Lembrando que todos os campos envolvidos nesta consulta devem ser VARCHAR ou CHAR.
Att.,
Marco.
GOSTEI 0
Emerson Nascimento
26/07/2011
select 'INSERT INTO CONHECIMENTO_CARGA VALUES(' + Convert(varchar(6),cod_indice)) + ',' + titulo + ',' +
tipo + ',' + convert(varchar(6),num_max) + ',' + aplicacao + ',' + mascara + ',' + convert(varchar(6),qtd_caracter) + ')'
from indice
o trecho destacado deveria ter apenas 1 parêntesis.
select 'INSERT INTO CONHECIMENTO_CARGA VALUES(' + Convert(varchar(6),cod_indice) + ',' + titulo + ','+
tipo + ',' + convert(varchar(6),num_max) + ',' + aplicacao + ','+mascara + ',' + convert(varchar(6),qtd_caracter) + ')'
from indice
tipo + ',' + convert(varchar(6),num_max) + ',' + aplicacao + ',' + mascara + ',' + convert(varchar(6),qtd_caracter) + ')'
from indice
o trecho destacado deveria ter apenas 1 parêntesis.
select 'INSERT INTO CONHECIMENTO_CARGA VALUES(' + Convert(varchar(6),cod_indice) + ',' + titulo + ','+
tipo + ',' + convert(varchar(6),num_max) + ',' + aplicacao + ','+mascara + ',' + convert(varchar(6),qtd_caracter) + ')'
from indice
GOSTEI 0
Pjava
26/07/2011
O que passa é quando ele acha campos NULL, ele não preenche os demais, ou seja, vem tudo null. Essa tabela tem 16 registros, e apenas duas tuplas que não tem nenhum, foi mostrada.
GOSTEI 0
Emerson Nascimento
26/07/2011
a ação vai depender do que você quer fazer no caso de campos nulos:
1. não gera a linha
2. gera com valores default
no segundo caso você pode usar a função COALESCE(). ela retorna o primeiro valor não-nulo da lista.
assim:
select 'INSERT INTO CONHECIMENTO_CARGA VALUES(' + Convert(varchar(6),coalesce(cod_indice,0)) + ',' + coalesce(titulo,'sem titulo') + ',' +
coalesce(tipo,'sem tipo') + ',' + convert(varchar(6),coalesce(num_max,100)) + ',' + coalesce(aplicacao,'sem aplicacao') + ','+ coalesce(mascara,'sem mascara') + ',' + convert(varchar(6),coalesce(qtd_caracter,0)) + ')'
from indice
1. não gera a linha
2. gera com valores default
no segundo caso você pode usar a função COALESCE(). ela retorna o primeiro valor não-nulo da lista.
assim:
select 'INSERT INTO CONHECIMENTO_CARGA VALUES(' + Convert(varchar(6),coalesce(cod_indice,0)) + ',' + coalesce(titulo,'sem titulo') + ',' +
coalesce(tipo,'sem tipo') + ',' + convert(varchar(6),coalesce(num_max,100)) + ',' + coalesce(aplicacao,'sem aplicacao') + ','+ coalesce(mascara,'sem mascara') + ',' + convert(varchar(6),coalesce(qtd_caracter,0)) + ')'
from indice
GOSTEI 0
Gabriel Soares
26/07/2011
Olá!
Uma função que geralmente utilizo nestes casos é a ISNULL.
Ela busca os valores nulos na tabela e substitui pelo que você colocar como parâmetro.
Sintaxe: ISNULL(coluna_que_contém_nulos, valor_subtituto)
Ex.:
select ISNULL(cast(REGRANOVA as varchar(500)), TESTE ) from REGRASNOVAS --> Em todos os campos que tiver "NULL", vai ser trocado por "TESTE".
Espero que ajude.
Uma função que geralmente utilizo nestes casos é a ISNULL.
Ela busca os valores nulos na tabela e substitui pelo que você colocar como parâmetro.
Sintaxe: ISNULL(coluna_que_contém_nulos, valor_subtituto)
Ex.:
select ISNULL(cast(REGRANOVA as varchar(500)), TESTE ) from REGRASNOVAS --> Em todos os campos que tiver "NULL", vai ser trocado por "TESTE".
Espero que ajude.
GOSTEI 0
Gabriel Soares
26/07/2011
No seu código, considerando que todas as colunas tenham pelo menos um registro null.
Substituindo os mesmo pelo testo "NULL", ficaria assim.
select insert into conhecimento_carga values( + isnull(convert(varchar(6),cod_indice), null + , +
isnull(titulo,null) + , + isnull(tipo,null) + , +
isnull(convert(varchar(6),num_max),null)
+ , + isnull(aplicacao,null) + , + isnull(mascara,null) + , +
isnull(convert(varchar(6),qtd_caracter),null) + ) from indice
Abraço!
Substituindo os mesmo pelo testo "NULL", ficaria assim.
select insert into conhecimento_carga values( + isnull(convert(varchar(6),cod_indice), null + , +
isnull(titulo,null) + , + isnull(tipo,null) + , +
isnull(convert(varchar(6),num_max),null)
+ , + isnull(aplicacao,null) + , + isnull(mascara,null) + , +
isnull(convert(varchar(6),qtd_caracter),null) + ) from indice
Abraço!
GOSTEI 0