ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

sql com variaveis

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Qua Set 20, 2017 9:51 am    Assunto: sql com variaveis Responder com Citação

ola tenho o sql para deletar e inserir varios delete e insert, porem todos tem o where data < data1, esse data1 e uma variavel quero setar ela no sql exemplo

Código:

EXECUTE BLOCK

AS
DECLARE data String = '28.02.2017';

BEGIN

apos o begin coloco todos os delete e insert necessario para nao precisar trocar de todos os deletes e insert quando mudar a data, ai mudaria somente na variavel, pore nao funciona da erro quando executo pelo ibexpert script executive
This operation is not defined for system tables.
Dynamic SQL Error.
SQL error code = -607.
Invalid command.
Specified domain or source column STRING does not exist.

como poderia fazer para funcionar passando a variavel para os delete e insert ????
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qua Set 20, 2017 9:58 am    Assunto: Responder com Citação

O erro está ocorrendo pois no banco de dados não é utilizado o tipo String e sim Varchar(Tamanho), ou no caso do Oracle, é utilizado Varchar2(Tamanho).

Para o tipo da variável, o ideal é sempre utilizar o mesmo tipo do campo o qual a variável vai ser comparada, então se o campo for do tipo DateTime ou Date, utilize esse tipo ao invés de Varchar.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Qua Set 20, 2017 4:44 pm    Assunto: Responder com Citação

fiz assim porem nao funciona

Código:

EXECUTE BLOCK
AS
DECLARE data Date = '28.02.2017';

begin
select a.id
from venda a
inner join conta c on c.id = a.id
where a.dt_emissao <  :data

end

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 11, column 1.
end.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leo_cj
Colaborador
Colaborador


Registrado: Sábado, 26 de Março de 2011
Mensagens: 1335

MensagemEnviada: Qui Set 21, 2017 9:28 am    Assunto: Responder com Citação

Não sei qual banco você está utilizando, mas no SQL Server pelo menos, apenas usamos o :Variável quando estamos passando o valor dessa variável pelo Delphi, quando é uma variável criada já no SQL fazemos assim:

Código:
DECLARE @Data Date = '28.02.2017';

SELECT Venda.ID
  FROM Venda
       INNER JOIN Conta
       ON Venda.ID = Conta.ID
 WHERE Venda.DT_Emissao < @Data
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Set 21, 2017 10:36 am    Assunto: Responder com Citação

Bom dia,

fabiodurgante, o que você quer fazer com o resultado retornado por esse Select?
Acho que se fosse um Insert ou Delete como você citou no início funcionaria, agora no caso do Select vai ser necessário alguma alteração, talvez para jogar o valor retornado em uma variável ou direto no Insert ou Delete.


_________________
Assinatura: https://www.imoveisemexposicao.com.br/imoveis-alugar-guarulhos!gopouva-residencial-apartamento
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Qui Set 21, 2017 11:01 am    Assunto: Responder com Citação

isso esse codigo
Código:

EXECUTE BLOCK
AS
DECLARE data Date = '28.02.2017';

begin
INSERT INTO conta SELECT * FROM conta1
where conta1.id in (
select a.id
from venda a
inner join conta1 c on c.id = a.id
where a.dt_emissao <  :data
end


ta mas assim tenho minha variavel com 1 valor no caso data indifrente se for insert ou select eu quero passar o valor da variavel para o insert entao
porem da erro no END
no sql editor do ibexpert
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 11, column 1.
end.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
fabiodurgante
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 8 de Novembro de 2013
Mensagens: 197

MensagemEnviada: Qui Set 21, 2017 11:21 am    Assunto: Responder com Citação

agora sim funcionou perfeitamente agradeço a todos tinha faltado );
Código:

EXECUTE BLOCK
AS
DECLARE data Date = '28.02.2017';

begin
INSERT INTO conta SELECT * FROM conta1
where conta1.id in (
select a.id
from venda a
inner join conta1 c on c.id = a.id
where a.dt_emissao <  :data );
end
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB