需要帮助将 T-SQL 转换为 PostgreSQL
Posted
技术标签:
【中文标题】需要帮助将 T-SQL 转换为 PostgreSQL【英文标题】:Need help translating T-SQL to PostgreSQL 【发布时间】:2021-01-17 14:12:30 【问题描述】:我只想翻译一个返回特定区域 (area_id) 中客户端数量的简单过程,以便在 PostgreSQL 中使用它。
T-SQL中的代码是:
CREATE PROCEDURE findGeoClients
@area_id INT
AS
SELECT COUNT(*) AS clients_in_that_area
FROM clients
WHERE area_id = @area_id
我尝试使用 sqlines.com/online 对其进行转换,但我不断收到语法错误。
【问题讨论】:
PL/SQL 与 Oracle 一起使用。改写 PostgreSQL 的标题和问题并删除 plsql 标签。 【参考方案1】:过程并不意味着返回任何东西,你需要一个函数。但是你不需要为此使用 PL/pgSQL。一个简单的 SQL 函数就可以了:
CREATE function findgeoclients(p_area_id int)
returns bigint
AS
$$
SELECT COUNT(*) AS clients_in_that_area
FROM clients
WHERE area_id = p_area_id;
$$
language sql
stable;
【讨论】:
如果我想要一个只打印结果的过程(在 PosgreSQL 中使用)? Postgres 不是 SQL Server,如果您想返回某些内容,请使用函数。如果你想“打印”结果,只需使用select findgeoclients(42);
以上是关于需要帮助将 T-SQL 转换为 PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章
将 Access Crosstab/PIVOT 查询转换为 T-SQL