Oracle与PostgreSQL的区别有哪些
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"Oracle与PostgreSQL的区别有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle与PostgreSQL的区
千家信息网最后更新 2026年11月01日Oracle与PostgreSQL的区别有哪些
这篇文章主要讲解了"Oracle与PostgreSQL的区别有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle与PostgreSQL的区别有哪些"吧!
Oracle
SQL> CREATE OR REPLACE function func_out(pi_in NUMBER,pi_out1 out number,pi_out2 out varchar2) 2 return date 3 as 4 v_date date; 5 begin 6 v_date := sysdate; 7 pi_out1 := pi_in; 8 pi_out2 := pi_in; 9 return v_date; 10 end; 11 /函数已创建。SQL>SQL> set serveroutput onSQL> declare 2 v_date date; 3 v_out1 number; 4 v_out2 varchar2(200); 5 begin 6 v_date := func_out(1,v_out1,v_out2); 7 dbms_output.put_line('v_date = '||v_date||';v_out1 = '||v_out1||';v_out2 = '||v_out2); 8 end; 9 /v_date = 14-2月 -20;v_out1 = 1;v_out2 = 1PL/SQL 过程已成功完成。SQL>输出参数分别是number、varchar2,函数返回date类型。
PostgreSQL
[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE function func_out(pi_in int,pi_out1 out int,pi_out2 out text) pg12@testdb-# returns datepg12@testdb-# aspg12@testdb-# $$pg12@testdb$# declarepg12@testdb$# v_date date;pg12@testdb$# begin pg12@testdb$# v_date := current_date();pg12@testdb$# pi_out1 := pi_in;pg12@testdb$# pi_out2 := to_char(pi_in);pg12@testdb$# return v_id; pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';ERROR: function result type must be record because of OUT parameters[local:/data/run/pg12]:5120 pg12@testdb=#
提示结果类型必须为record
[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE function func_out(pi_in int,pi_out1 out int,pi_out2 out text) pg12@testdb-# returns recordpg12@testdb-# aspg12@testdb-# $$pg12@testdb$# declarepg12@testdb$# v_date date;pg12@testdb$# begin pg12@testdb$# v_date := current_date;pg12@testdb$# pi_out1 := pi_in;pg12@testdb$# pi_out2 := to_char(pi_in);pg12@testdb$# return null; pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';ERROR: RETURN cannot have a parameter in function with OUT parametersLINE 11: return null; ^[local:/data/run/pg12]:5120 pg12@testdb=#
改为record后,返回null值,提示如存在OUT参数不允许返回值。
[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE function func_out(pi_in int,pi_out1 out int,pi_out2 out text) pg12@testdb-# returns recordpg12@testdb-# aspg12@testdb-# $$pg12@testdb$# declarepg12@testdb$# v_date date;pg12@testdb$# begin pg12@testdb$# v_date := current_date;pg12@testdb$# pi_out1 := pi_in;pg12@testdb$# pi_out2 := pi_in;pg12@testdb$# return; pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';CREATE FUNCTION[local:/data/run/pg12]:5120 pg12@testdb=#
创建成功,尝试调用
[local:/data/run/pg12]:5120 pg12@testdb=# dopg12@testdb-# $$pg12@testdb$# declarepg12@testdb$# v_ret record;pg12@testdb$# v_out1 int;pg12@testdb$# v_out2 text;pg12@testdb$# beginpg12@testdb$# v_ret := func_out(1,v_out1,v_out2);pg12@testdb$# raise notice 'ret is : %d',v_ret;pg12@testdb$# endpg12@testdb$# $$pg12@testdb-# ;ERROR: function func_out(integer, integer, text) does not existLINE 1: SELECT func_out(1,v_out1,v_out2) ^HINT: No function matches the given name and argument types. You might need to add explicit type casts.QUERY: SELECT func_out(1,v_out1,v_out2)CONTEXT: PL/pgSQL function inline_code_block line 7 at assignment[local:/data/run/pg12]:5120 pg12@testdb=#
提示没有相应的函数,原因是PG会忽略OUT参数,把out参数去掉重新调用
[local:/data/run/pg12]:5120 pg12@testdb=# dopg12@testdb-# $$pg12@testdb$# declarepg12@testdb$# v_ret record;pg12@testdb$# v_out1 int;pg12@testdb$# v_out2 text;pg12@testdb$# beginpg12@testdb$# v_ret := func_out(1);pg12@testdb$# raise notice 'ret is : %',v_ret;pg12@testdb$# endpg12@testdb$# $$;NOTICE: ret is : (1,1)DO[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=#
返回的是record,第一个值为1,第二个值为1
1.PG会忽略输出参数,判断一个函数是否是同一个函数,仅判断输入参数;
2.如存在OUT参数,PG函数无法返回结果,只能通过OUT参数返回。
感谢各位的阅读,以上就是"Oracle与PostgreSQL的区别有哪些"的内容了,经过本文的学习后,相信大家对Oracle与PostgreSQL的区别有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
参数
函数
学习
提示
成功
内容
类型
结果
输出
原因
就是
思路
情况
文章
更多
知识
知识点
篇文章
跟着
过程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
手磨咖啡
成都互联网科技公司
朗涯互联网科技
互联网金融科技委员会
天扬科技互联网广告
成都玖崟互联网科技有限公司乐商圈怎么样
广州优美互联网科技
浙江互联网科技研学营
东莞新华互联网科技学校
工业互联网等科技实现智能化赋能
梅州GM互联网络科技有限公司
互联网领先科技宣传片
互联网与数字科技关系
珠海东科互联网科技有限公司
上海万顺科技互联网有限公司招聘
中国互联网公司的科技投入
杭州融税互联网科技有限公司
互联网科技创业有什么好项目
每日互联网科技新闻
颐高云石互联网科技
互联网电商科技
互联网与科技发展
互联网 科技
互联网科技公司官网
丰台科技园 互联网
上海卓越科技 互联网
小米互联网科技园设置
央行互联网金融科技公司
团飞科技与伯堂互联网服务平台
花神(南京)互联网科技有限公司