我有一个 PostgresSQL 表,其中有一个 TIMESTAMP 字段,以及一个关联的存储过程,该存储过程采用INTERVAL
并计算与 的差值now() + in_interval
。我想用来dbeaver
测试但不知道如何实现这一点。
我尝试设置一个变量,例如@set interval = now() + 'INTERVAL 1 MINUTE'
并将其与:interval
使用嵌套选择
SELECT insert_event('event_type', (select (now() + interval '1 minute')));
还有一些其他东西我丢失了,但我不断出错。这可能吗?
CREATE TABLE events (
event TEXT
event_time TIMESTAMP
);
和一个存储过程
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
我做了以下事情(在这里摆弄):
进而:
我们使用我们的函数
结果:
瞧!与 DBeaver 无关!
首先,您的声明
是 MySQL 或 SQL Server 语法(?或混合),更重要的是,您似乎正在做的是创建会话变量,
psql
而不是 DBeaver 可以使用的任何内容。在 中
psql
,您可以执行以下操作:请注意
'''
- 转义引用的位!然后您可以按如下方式测试您的功能:工作正常!注意
:
前面的the_int
.为了快速对你的函数进行临时测试,你可以做这样的事情 - 该
insert_event_bis()
函数实际上INSERT
是记录到events
表中 - 请参阅小提琴:进而:
然后检查:
结果:
也可以在函数体中执行以下操作(请参阅小提琴的最后一个片段):
这些将与 DBeaver 一起使用!