Oracle与PostgreSQL的区别有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要讲解了"Oracle与PostgreSQL的区别有哪些",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle与PostgreSQL的区
千家信息网最后更新 2025年11月07日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安全错误
数据库的锁怎样保障安全
高清互联网科技图片素材
网上超市数据库技术如何设计
选择服务器的作用
传奇手游服务器端
基于校园网网络安全的设计
南通市法院网络安全中标公告
数据库实现安全分析
right数据库是什么意思
中企动力邮箱服务器
大专哪些学校有软件开发
网络安全寓意海报
模板化的软件开发劣势
数据库 数据文件
国内网络安全排行
网站建设服务器如何选
sqlplus创建数据库名
SAP如何更改数据库表开发类
jcp属于什么数据库
企业薪酬发放软件开发理论
rpc服务器不可用怎么办
百度用的服务器是什么
网络安全管理制度的封面
网络安全技术大作业高子天
网络技术就业前景怎样
网络安全大队的民警报道标题
快科技互联网套餐
网络安全业务内容包括
网络安全编程书
数据库恢复的主要原理
开展网络安全专题督查