有没有办法将 MSSQL 脚本转换为 PostgreSQL 脚本?
Is there any way to convert MSSQL script to PostgreSQL script?
我需要将此过程从 MSSQL 转换为 PostgreSQL。
CREATE PROCEDURE GetUserPhone
@PhoneNumber varchar(255) output,
@BIC integer,
@Rest numeric(9,4) output
AS
BEGIN
select @PhoneNumber = @PhoneNumber
select @Rest = 600.889
INSERT INTO CallLimit
(Phone ,Limit)
VALUES
(@PhoneNumber,18655)
END
是的,至少有一种方法:手动将交易 SQL 代码转换为 PL/pgSQL 代码
这是 PostgreSQL 默认的过程语言。 PostgreSQL 从版本 11 开始就有存储过程(旧版本需要使用存储函数)。
该文档没有将 Transact-SQL 转换为 PL/pgSQL 的示例,但有一些将 Oracle PL/SQL 转换为 PL/pgSQL 的示例:请参阅 PG docs .
这个程序对我来说毫无意义。它被称为 GetUserPhone,但据我所知它没有“获取”任何东西,它只是 插入 一个新行。
将 @PhoneNumber
声明为 OUT
参数似乎也没有任何意义。输出值只是设置为输入值(如果我正确理解该代码)。 @BIC
没有用到,完全可以去掉
据我所知,这可以转换为如下形式:
create or replace procedure insert_call_limit(p_phone_number text, inout p_rest numeric)
as
$$
begin
insert into call_limit (phone, limit)
values (p_phone_number, 18655);
p_rest := 600.889
end;
$$
language plpgsql;
由于该过程似乎只 return 单个值 (@Rest
) 我可能会把它变成一个函数,而不是使用可疑的 OUT 参数。
如果您需要更多详细信息,请参阅PL/pgSQL reference
我需要将此过程从 MSSQL 转换为 PostgreSQL。
CREATE PROCEDURE GetUserPhone
@PhoneNumber varchar(255) output,
@BIC integer,
@Rest numeric(9,4) output
AS
BEGIN
select @PhoneNumber = @PhoneNumber
select @Rest = 600.889
INSERT INTO CallLimit
(Phone ,Limit)
VALUES
(@PhoneNumber,18655)
END
是的,至少有一种方法:手动将交易 SQL 代码转换为 PL/pgSQL 代码 这是 PostgreSQL 默认的过程语言。 PostgreSQL 从版本 11 开始就有存储过程(旧版本需要使用存储函数)。
该文档没有将 Transact-SQL 转换为 PL/pgSQL 的示例,但有一些将 Oracle PL/SQL 转换为 PL/pgSQL 的示例:请参阅 PG docs .
这个程序对我来说毫无意义。它被称为 GetUserPhone,但据我所知它没有“获取”任何东西,它只是 插入 一个新行。
将 @PhoneNumber
声明为 OUT
参数似乎也没有任何意义。输出值只是设置为输入值(如果我正确理解该代码)。 @BIC
没有用到,完全可以去掉
据我所知,这可以转换为如下形式:
create or replace procedure insert_call_limit(p_phone_number text, inout p_rest numeric)
as
$$
begin
insert into call_limit (phone, limit)
values (p_phone_number, 18655);
p_rest := 600.889
end;
$$
language plpgsql;
由于该过程似乎只 return 单个值 (@Rest
) 我可能会把它变成一个函数,而不是使用可疑的 OUT 参数。
如果您需要更多详细信息,请参阅PL/pgSQL reference