postgresql - 文件被解释为变量
问题描述
用 SQL 编写并测试了一个非常简单的脚本。现在我需要让它在 Postgres 中工作(我只是在学习)。无法弄清楚最新的错误。该脚本正在读取文件作为变量。也许我没有正确使用 DBeaver(我也在努力学习)。基本上,当数据超过 90 天时,将日期从 transactions 移动到 archive_transactions 并删除 change_log 记录。错误和代码如下:
SQL Error [42601]: ERROR: "archived_transactions_prerun" is not a known variable
Position: 325
代码:
CREATE OR REPLACE FUNCTION Archiving ()
RETURNS void AS $$
declare
BEGIN
DROP TABLE IF EXISTS Archived_Transactions_PreRun;
DROP TABLE IF EXISTS Change_Log_PreRun;
DROP TABLE IF EXISTS Transactions_PreRun;
--COMMIT;
SELECT *
INTO Archived_Transactions_PreRun
FROM Archived_Transactions;
SELECT *
INTO Change_Log_PreRun
FROM Change_Log;
SELECT *
INTO Transactions_PreRun
FROM Transactions;
COMMIT;
-- Create reporting table entries
----------------------------------
DECLARE YYYY_MM_DD DATE = (SELECT CONVERT (DATE, GETDATE())) -- Run Date
, Report_Date DATE = (SELECT DATEADD (DAY, -90, GETDATE())) -- 90 Days ago
, To_Archive FLOAT
, Chg_Log FLOAT;
-- Count records to be archived
-------------------------------
SET Chg_Log = (SELECT COUNT(*) FROM Change_Log WHERE date_updated < Report_Date);
SET To_Archive = (SELECT COUNT(*) FROM transactions WHERE date < Report_Date);
-- If nothing to archive, exit
------------------------------
IF Chg_Log > 0
OR To_Archive > 0;
BEGIN
-- Remove 90+ records from change_log
-------------------------------------
DELETE
FROM change_log
WHERE date_updated < Report_Date;
-- Copy 90+ records to Archived_Transactions
--------------------------------------------
INSERT INTO Archived_Transactions
SELECT *
FROM Transactions
WHERE [date] < Report_Date;
-- Remove 90+ records from transactions
---------------------------------------
DELETE
FROM Transactions
WHERE date < Report_Date;
COMMIT;
END;
END;
$$
LANGUAGE 'plpgsql' VOLATILE
COST 100
解决方案
推荐阅读
- android - Native Android App中的颤振,后按不起作用
- github-actions - GitHub Action - 定义作业之间的工作流级别环境变量
- sql - SQL max 函数获取其他表
- authentication - NuxtJS 身份验证代理
- android - 是否可以在华为设备上创建一个重定向到华为 AppGalery 的 Firebase 动态链接
- php - 时间用完后刷新页面的Javascript
- r - 如何将.avl 后缀文件读入r?
- javascript - 如果无法加载,如何隐藏图像/视频
- pandas - 从数据框的文本列中删除不需要的字符
- android - MediaRecorder Surface Input with OpenGL - 如果启用了音频录制,则会出现问题