Eu tenho uma tabela PostgresSQL que possui um campo para TIMESTAMP e um procedimento armazenado associado que pega INTERVAL
e calcula a diferença de now() + in_interval
. Quero usar dbeaver
para testar, mas não consigo descobrir como fazer isso.
Eu tentei definir uma variável, por exemplo, @set interval = now() + 'INTERVAL 1 MINUTE'
e usá-la com:interval
Usando uma seleção aninhada
SELECT insert_event('event_type', (select (now() + interval '1 minute')));
E algumas outras coisas que perdi, mas continuo recebendo erros. Isso é possível?
CREATE TABLE events (
event TEXT
event_time TIMESTAMP
);
E um sproc
CREATE OR REPLACE FUNCTION insert_event(
in_event TEXT
in_interval INTERVAL
)
RETURNS void
AS $$
DECLARE
v_now TIMESTAMP := now() at time zone 'utc';
v_end_time TIMESTAMP := v_now + in_interval;
BEGIN
...use the value later on...
END
Eu fiz o seguinte (mexido aqui ):
e então:
e usamos nossa função
Resultado:
Et voilà! Nada a ver com DBeaver!
Para começar, sua declaração
é a sintaxe do MySQL ou do SQL Server (? ou uma mistura) e, mais importante , o que você parece estar fazendo é criar uma variável de sessão
psql
e não qualquer coisa que possa ser usada pelo DBeaver.Em
psql
, você pode fazer o seguinte:Observe o
'''
- escapando dos bits citados! E então você pode testar sua função da seguinte maneira:Funciona bem! Observe o que
:
está na frente dethe_int
.Para testes ad-hoc rápidos de sua função, você poderia fazer algo assim - a
insert_event_bis()
função na verdadeINSERT
é um registro naevents
tabela - veja violino:e então:
e depois verificar:
Resultado:
Também pode ser feito, no corpo da função (veja os últimos trechos do violino):
Eles funcionarão com DBeaver!