Sql server 有没有办法将MSSQL脚本转换为PostgreSQL脚本?

Sql server 有没有办法将MSSQL脚本转换为PostgreSQL脚本?,sql-server,postgresql,stored-procedures,plpgsql,Sql Server,Postgresql,Stored Procedures,Plpgsql,我需要将这个过程从MSSQL转换成PostgreSQL CREATE PROCEDURE GetUserPhone @PhoneNumber varchar(255) output, @BIC integer, @Rest numeric(9,4) output AS BEGIN select @PhoneNumber = @PhoneNumber select @Rest = 600.8

我需要将这个过程从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

是,至少有一种方法:手动将Transact-SQL代码转换为PL/pgSQL代码 这是PostgreSQL默认的过程语言。PostgreSQL从版本11开始就有存储过程(对于较旧的版本,您需要使用存储函数)


文档中没有将Transact-SQL转换为PL/pgSQL的示例,但有一些将Oracle PL/SQL转换为PL/pgSQL的示例:请参阅。

我对该过程毫无意义。它名为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;
由于该过程似乎只返回单个值(
@Rest
),我可能会将其转换为函数,而不是使用可疑的OUT参数

如果您需要更多详细信息,请参阅