Oracle的SQL和PL/SQL语法相对宽松,而PostgreSQL则相对严格一些。
在PL/SQL中,某些语句后可以不加分号,而PG则要求必须加分号。
Oracle
创建存储过程,loop不管加不加分号,均可创建成功。
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
创建存储过程,loop后必须加分号,才可创建成功。
[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
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容- 在 Java 中,Integer 究竟有哪些作用呢?(java中integer的作用是什么)
- Java 实体类如何进行赋值操作?(java实体类怎么赋值)
- Java 中 switch case 的具体用法有哪些?(switchcase在java中的用法)
- 如何在 Java EMqtt 中实现消息确认机制?(Java EMqtt怎样实现消息确认机制)
- Java 性能调优的有效手段有哪些?(Java性能调优有何有效手段)
- 探讨Uncomtrade数据库的安全防护措施
- Java 如何获取某个接口的实现类?(Java怎么获取某个接口的实现类)
- Java中如何正确使用 collections.shuffle 方法?(Java中collections.shuffle怎么使用)
- Java Swing 中常用的布局有哪些?(java swing常用布局有哪些)
- 如何通过 Java Reflection 获取泛型信息?(java reflection如何获取泛型信息)
猜你喜欢
AI推送时光机 咦!没有更多了?去看看其它编程学习网 内容吧