需要帮助将 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的主要内容,如果未能解决你的问题,请参考以下文章

将 T-SQL 交叉应用转换为 Oracle

将 T-SQL 表值函数字符串拆分为 C#

将 Access Crosstab/PIVOT 查询转换为 T-SQL

使用相同的 SQL 生成输出将 T-SQL 转换为 Fluent Linq C#

SQL 连接的补充?需要 T-SQL 帮助

将 T-SQL 转换为 MySQL