| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
fabiodurgante Aprendiz

Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Qua Set 20, 2017 9:51 am Assunto: sql com variaveis |
|
|
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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qua Set 20, 2017 9:58 am Assunto: |
|
|
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 |
|
 |
fabiodurgante Aprendiz

Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Qua Set 20, 2017 4:44 pm Assunto: |
|
|
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 |
|
 |
leo_cj Colaborador

Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Qui Set 21, 2017 9:28 am Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Set 21, 2017 10:36 am Assunto: |
|
|
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 |
|
 |
fabiodurgante Aprendiz

Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Qui Set 21, 2017 11:01 am Assunto: |
|
|
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 |
|
 |
fabiodurgante Aprendiz

Registrado: Sexta-Feira, 8 de Novembro de 2013 Mensagens: 197
|
Enviada: Qui Set 21, 2017 11:21 am Assunto: |
|
|
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 |
|
 |
|