OraclevsPostgreSQLDevelop(25)-plsqlvsplpgsql(語法嚴(yán)謹(jǐn)性)

Oracle的SQL和PL/SQL語法相對寬松,而PostgreSQL則相對嚴(yán)格一些。
在PL/SQL中,某些語句后可以不加分號,而PG則要求必須加分號。

Oracle
創(chuàng)建存儲過程,loop不管加不加分號,均可創(chuàng)建成功。

TEST-orcl@DESKTOP-V430TU3>CREATE OR REPLACE PROCEDURE proc_test(a NUMBER) as
  2  v_id number;
  3  begin
  4    for i in (select 1 from dual) loop
  5      select 2 into v_id from dual;
  6    end loop
  7    return;
  8  end;
  9  /
Procedure created.
TEST-orcl@DESKTOP-V430TU3>
TEST-orcl@DESKTOP-V430TU3>CREATE OR REPLACE PROCEDURE proc_test(a NUMBER) as
  2  v_id number;
  3  begin
  4    for i in (select 1 from dual) loop
  5      select 2 into v_id from dual;
  6    end loop;
  7    return;
  8  end;
  9  /
Procedure created.
TEST-orcl@DESKTOP-V430TU3>

PostgreSQL
創(chuàng)建存儲過程,loop后必須加分號,才可創(chuàng)建成功。

[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE PROCEDURE proc_test(pi_in int) 
pg12@testdb-# as
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_id int;
pg12@testdb$#   i record;
pg12@testdb$# begin 
pg12@testdb$#   for i in (select 1 from dual) loop 
pg12@testdb$#     select 2 into v_id from dual; 
pg12@testdb$#   end loop
pg12@testdb$#   return; 
pg12@testdb$# end;
pg12@testdb$# $$ LANGUAGE 'plpgsql';
t(pi_in int) 
as
$$
declare
  v_id int;
  i record;
begin 
  for i in (select 1 from dual) loop 
    select 2 into v_id from dual; 
  end loop;
  return; 
end;
$$ LANGUAGE 'plpgsql';
ERROR:  end label "return" specified for unlabelled block
LINE 11:   return; 
           ^
[local:/data/run/pg12]:5120 pg12@testdb=# 
[local:/data/run/pg12]:5120 pg12@testdb=# 
[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE PROCEDURE proc_test(pi_in int) 
pg12@testdb-# as
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_id int;
pg12@testdb$#   i record;
pg12@testdb$# begin 
pg12@testdb$#   for i in (select 1 from dual) loop 
pg12@testdb$#     select 2 into v_id from dual; 
pg12@testdb$#   end loop;
pg12@testdb$#   return; 
pg12@testdb$# end;
pg12@testdb$# $$ LANGUAGE 'plpgsql';
CREATE PROCEDURE
[local:/data/run/pg12]:5120 pg12@testdb=# 
[local:/data/run/pg12]:5120 pg12@testdb=#

參考資料
N/A

網(wǎng)站標(biāo)題:OraclevsPostgreSQLDevelop(25)-plsqlvsplpgsql(語法嚴(yán)謹(jǐn)性)
新聞來源:http://muchs.cn/article6/ihspig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、微信小程序、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站改版Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營