【发布时间】:2017-05-23 07:19:16
【问题描述】:
我有如下查询创建表
DROP TABLE IF EXISTS BAJUL;
CREATE TABLE BAJUL AS (
SELECT dt_trx, row_number() OVER (ORDER BY dt_trx DESC) AS row_number
FROM stock_trx_idx
WHERE dt_trx BETWEEN '2017-01-01' AND '2017-02-28'
GROUP BY 1
ORDER BY 1 DESC);
如何在 Postgresql 中使用存储函数创建上表? 我尝试使用以下脚本
CREATE OR REPLACE FUNCTION my_function (dt1 DATE, dt2 DATE)
RETURNS VOID AS
$func$
BEGIN
EXECUTE format('
DROP TABLE IF EXISTS tblq;
CREATE TABLE IF NOT EXISTS tblq AS(
SELECT dt_trx, row_number() OVER (ORDER BY dt_trx DESC) AS row_number
FROM stock_trx
WHERE dt_trx BETWEEN dt1 AND dt2
GROUP BY 1
ORDER BY 1 DESC
)' );
END
$func$ LANGUAGE plpgsql;
但是当我尝试像下面这样执行 SF 时
SELECT my_function ('2017-01-01', '2017-02-28');
我收到错误 --> 错误:列“dt1”不存在
想寻求你的帮助。
感谢和 rgds, 巴渝
【问题讨论】:
-
你不需要
format()函数也不需要EXECUTE语句或者这个。
标签: postgresql stored-functions