[英]prepared Statements nodejs postgresql returns error no parameter
[英]Postgresql: prepared statements in loop with date as parameter
我有三個准備好的語句,它們從給定日期的不同表(多個選擇語句+聯接+子查詢)創建表,然后聯接兩個准備好的語句的結果,即:
CREATE TABLE _table1 AS
EXECUTE statement1('2000-01-01 00:00:00');
CREATE TABLE _table2 AS
EXECUTE statement2('2000-01-01 00:00:00');
CREATE TABLE _table3 AS
EXECUTE statement3('2000-01-01 00:00:00');
CREATE TABLE _table_all AS
SELECT *
FROM _table1
LEFT JOIN
_table3
ON _table1.var1 = _table3.var1;
Statement3建立在statement2上=從_table2中選擇(分開以使其更具可讀性)。
我想做的是:
我不知道如何使這樣的循環/函數創建表並傳遞table_name和date作為參數。
預期結果:
FOR my_date IN ('2000-01-01 00:00:00', '2001-01-01 00:00:00', '2002-01-01 00:00:00'):
CREATE TABLE _table1 AS
EXECUTE statement1(@my_date);
CREATE TABLE _table2 AS
EXECUTE statement2(@my_date);
CREATE TABLE _table3 AS
EXECUTE statement3(@my_date);
CREATE TABLE _table_@my_date AS
SELECT *
FROM _table1
LEFT JOIN
_table3
ON _table1.var1 = _table3.var1;
DROP TABLE _table1;
DROP TABLE _table2;
DROP TABLE _table3;
有什么幫助嗎?
postgres中有兩種不同形式的EXECUTE
EXECUTE
,在這里描述: EXECUTE
准備語句的EXECUTE
,作為獨立的SQL語句(不與過程語言綁定),描述如下: https://www.postgresql.org/docs/current/static/sql-execute.html
它是適合您目的 (動態SQL)的第一個,而不是第二個。 我懷疑您是通過查找關於EXECUTE
並遵循錯誤線索而導致准備陳述的。 准備好的語句在您的上下文中沒有用。
有關相關的Q / A,請參見postgres中的動態sql查詢,通常,您會在stackoverflow或網絡上的其他地方找到動態SQL的示例。 例如,分區代碼往往看起來像您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.