postgresql - 具有 2 个表更新的简单 Postgres 过程不起作用
问题描述
我是从 MSSQL 到 PostgreSQL 的程序员。我很难让简单的程序起作用。我确定我错过了一些东西。寻求您的专业知识。
在下面,我正在创建一个永久表 A 和临时表 B。我正在尝试通过对 tableA 和 B 进行连接来更新。出于某种原因
- 它希望所有表都可用。我有很大的列列表,所以我选择进入。
- 我单独执行了这些语句,并且只有在创建 2 个表时才允许创建过程
- 即使在成功创建过程后,当我尝试调用该过程时出现运行时错误
我尝试了 cte,但即便如此,它在 Update 语句中的某处也会出错。这只是我发布的示例代码。谢谢你的时间。
CREATE or replace PROCEDURE "ASG"."loadABC"()
LANGUAGE SQL
AS $$
drop table "tableA";
SELECT "Code", c1, c2, c3
INTO "tableA"
FROM
(SELECT 1 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 2 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 3 "Code", 'A' c1, 'B' c2, 'update c' c3
)A
--JOIN other tables not necessary for this now
;
SELECT "Code", c1, c2, c3
INTO TEMPORARY TABLE "tableB"
FROM
(SELECT 1 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 2 "Code", 'A' c1, 'B' c2, 'update c' c3
union SELECT 3 "Code", 'A' c1, 'B' c2, 'update c' c3
)B;
update "tableA" A
set "c3" = b."c2"
from "tableB" b
where
(A."Code" = b."Code");
drop table "tableB";
$$;
解决方案
推荐阅读
- java - QueryParameterException even if everything seems to be named properly
- list - How to apply flatMap to list of tuples (Int,String) in Scala?
- android - Android 9 上的 React Native 网络失败
- sql - 按 (city,sku) 分组选择两列,但仅按 (city) 显示前 5 个寄存器
- pytorch - Masking and computing loss for a padded batch sent through an RNN with a linear output layer in pytorch
- wpf - WPF DelegateCommand 如何控制何时调用 CanExecute 方法
- ruby - 如何使用计数器方法打印返回的只有英文的推文数量?
- node.js - transform coding in nodejs with Iconv
- javascript - 为我的 React typescript 项目配置 Webpack(Webpack 版本 4.39.2)
- r - 在 R 中将文本拆分为不重叠的 ngram