您好,登錄后才能下訂單哦!
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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。