Sql server 有没有办法将MSSQL脚本转换为PostgreSQL脚本?
我需要将这个过程从MSSQL转换成PostgreSQLSql 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
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参数
如果您需要更多详细信息,请参阅