将 SQL 服务器存储过程转换为 PostgreSQL 函数
Convert SQL Server stored procedure to PostgreSQL function
我是 Postgre 的新手SQL,我有一个用 T-SQL 编写的存储过程,我想将其转换为 PostgreSQL。到目前为止,我已经完成了,但我被困在原地,我搜索了很多地方,但在互联网上没有找到任何东西。
下面是我需要适配PGSQL
的T-SQL存储过程
If <someCondi>
BEGIN
...
END
ELSE
BEGIN
GENERATE:
BEGIN try
IF <someCondi>
BEGIN
...
END
ELSE
BEGIN
...
END
END try
BEGIN catch
IF <someCondi>
BEGIN
...
END
if @LoopCount<=2
begin
goto GENERATE
end
END catch
END
我已经转换了大部分存储过程部分,但我需要替换其他部分。不知道如何在 pgsql 中转换 try catch 以及 GOTO 的替代方法。请帮助
虽然 plpgsql 是一种块结构语言,但它不需要在每个 if 条件或 else 上开始...结束。然而,它确实需要在 If 条件和 End if 之后的 THEN 关键字来终止。
如前所述,如果没有“Try ... Catch”结构。基本上每个语句都是隐含的“try 语句”,因为任何语句都可能抛出异常。 catch 部分由块末尾的 EXCEPTION 部分提供。整个块中的任何错误都将在这里被捕获。我建议你花一些时间在 documentation 上。以下似乎是您需要的结构。
declare -- assumed as not present in post
loopcount integer := 1; -- initial value my assumption
begin -- procedure (outer block)
while loopcount <= 2 -- generate
loop
begin -- nested block
if <somecondi>
then
...
else
if <somecondi>
then
...
else
...
end if;
end if ;
exception -- catch
when others then
if <somecondi>
then
...
end if;
end; -- nested block
end loop; -- generate
end ; -- procedure (outer block)
我是 Postgre 的新手SQL,我有一个用 T-SQL 编写的存储过程,我想将其转换为 PostgreSQL。到目前为止,我已经完成了,但我被困在原地,我搜索了很多地方,但在互联网上没有找到任何东西。
下面是我需要适配PGSQL
的T-SQL存储过程If <someCondi>
BEGIN
...
END
ELSE
BEGIN
GENERATE:
BEGIN try
IF <someCondi>
BEGIN
...
END
ELSE
BEGIN
...
END
END try
BEGIN catch
IF <someCondi>
BEGIN
...
END
if @LoopCount<=2
begin
goto GENERATE
end
END catch
END
我已经转换了大部分存储过程部分,但我需要替换其他部分。不知道如何在 pgsql 中转换 try catch 以及 GOTO 的替代方法。请帮助
虽然 plpgsql 是一种块结构语言,但它不需要在每个 if 条件或 else 上开始...结束。然而,它确实需要在 If 条件和 End if 之后的 THEN 关键字来终止。
如前所述,如果没有“Try ... Catch”结构。基本上每个语句都是隐含的“try 语句”,因为任何语句都可能抛出异常。 catch 部分由块末尾的 EXCEPTION 部分提供。整个块中的任何错误都将在这里被捕获。我建议你花一些时间在 documentation 上。以下似乎是您需要的结构。
declare -- assumed as not present in post
loopcount integer := 1; -- initial value my assumption
begin -- procedure (outer block)
while loopcount <= 2 -- generate
loop
begin -- nested block
if <somecondi>
then
...
else
if <somecondi>
then
...
else
...
end if;
end if ;
exception -- catch
when others then
if <somecondi>
then
...
end if;
end; -- nested block
end loop; -- generate
end ; -- procedure (outer block)