Oracle与PostgreSQL内置的编程语言有什么不同
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容主要讲解"Oracle与PostgreSQL内置的编程语言有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle与PostgreSQ
千家信息网最后更新 2025年11月07日Oracle与PostgreSQL内置的编程语言有什么不同
本篇内容主要讲解"Oracle与PostgreSQL内置的编程语言有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle与PostgreSQL内置的编程语言有什么不同"吧!
Oracle和PostgreSQL都提供了内置的编程语言(PL/SQL vs PL/pgSQL),在输入输出参数的声明上有较大的不同,如输入参数中存在inout/out参数,Oracle的函数可以有返回值,但PG不允许有返回值,只能通过参数返回。
Oracle
创建函数
TEST-orcl@DESKTOP-V430TU3>CREATE or replace FUNCTION sf_testparameter(p1 varchar2,p2 int,p3 varchar2,p4 in out int) 2 RETURN varchar2 3 is 4 begin 5 p4 := 1; 6 return 'test'; 7 end; 8 /Function created.
执行
TEST-orcl@DESKTOP-V430TU3>select sf_testparameter(null,null,null,:p4) from dual;select sf_testparameter(null,null,null,:p4) from dual *ERROR at line 1:ORA-06572: Function SF_TESTPARAMETER has out arguments
不能在SQL中执行,但可以在PL/SQL中执行
TEST-orcl@DESKTOP-V430TU3>set serveroutput onTEST-orcl@DESKTOP-V430TU3>declare 2 p4 number; 3 ret varchar2(100); 4 begin 5 ret := sf_testparameter(null,null,null,p4); 6 dbms_output.put_line('p4 = '||p4||',ret='||ret); 7 end; 8 /p4 = 1,ret=testPostgreSQL
创建函数,参数中存在inout类型的参数,返回值必须与该参数类型一样,而且return不能返回实际值。
[local:/data/run/pg12]:5120 pg12@testdb=# CREATE or replace FUNCTION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int)pg12@testdb-# RETURNS text pg12@testdb-# AS $$pg12@testdb$# beginpg12@testdb$# return 'test';pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';ERROR: function result type must be integer because of OUT parameters[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=# drop function sf_testparameter;ERROR: could not find a function named "sf_testparameter"[local:/data/run/pg12]:5120 pg12@testdb=# CREATE or replace FUNCTION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int)pg12@testdb-# RETURNS int pg12@testdb-# AS $$pg12@testdb$# beginpg12@testdb$# return 1;pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';ERROR: RETURN cannot have a parameter in function with OUT parametersLINE 5: return 1; ^[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=# CREATE or replace FUNCTION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int)pg12@testdb-# RETURNS int pg12@testdb-# AS $$pg12@testdb$# beginpg12@testdb$# return;pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';CREATE FUNCTION[local:/data/run/pg12]:5120 pg12@testdb=# select sf_testparameter(null,null,null,null); sf_testparameter ------------------(1 row)[local:/data/run/pg12]:5120 pg12@testdb=#
如参数中有多个out参数,则要求返回record类型
[local:/data/run/pg12]:5120 pg12@testdb=# drop function sf_testparameter;ION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int,out p5 text) RETURNS record AS $$begin return;end;$$ LANGUAGE 'plpgsql';\df sf_testparameterselect sf_testparameter(null,null,null,null,null);select sf_testparameter(null,null,null,null);DROP FUNCTION[local:/data/run/pg12]:5120 pg12@testdb=# CREATE or replace FUNCTION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int,out p5 text)pg12@testdb-# RETURNS text pg12@testdb-# AS $$pg12@testdb$# beginpg12@testdb$# return 'test';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=# [local:/data/run/pg12]:5120 pg12@testdb=# drop function sf_testparameter;ERROR: could not find a function named "sf_testparameter"[local:/data/run/pg12]:5120 pg12@testdb=# CREATE or replace FUNCTION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int,out p5 text)pg12@testdb-# RETURNS recordpg12@testdb-# AS $$pg12@testdb$# beginpg12@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=# \df sf_testparameterList of functions-[ RECORD 1 ]-------+------------------------------------------------------------Schema | publicName | sf_testparameterResult data type | recordArgument data types | p1 text, p2 integer, p3 text, INOUT p4 integer, OUT p5 textType | func[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=# select sf_testparameter(null,null,null,null,null);ERROR: function sf_testparameter(unknown, unknown, unknown, unknown, unknown) does not existLINE 1: select sf_testparameter(null,null,null,null,null); ^HINT: No function matches the given name and argument types. You might need to add explicit type casts.[local:/data/run/pg12]:5120 pg12@testdb=# select sf_testparameter(null,null,null,null); sf_testparameter ------------------ (,)(1 row)[local:/data/run/pg12]:5120 pg12@testdb=#
不管有多少个out参数,都归为return参数,在调用时不需要作为参数输入,难怪PG要求返回record类型。
[local:/data/run/pg12]:5120 pg12@testdb=# drop function sf_testparameter;DROP FUNCTION[local:/data/run/pg12]:5120 pg12@testdb=# CREATE or replace FUNCTION sf_testparameter(p1 text,p2 int,p3 text,inout p4 int,out p5 text,out p6 text)pg12@testdb-# RETURNS recordpg12@testdb-# AS $$pg12@testdb$# beginpg12@testdb$# return;pg12@testdb$# end;pg12@testdb$# $$ LANGUAGE 'plpgsql';CREATE FUNCTION[local:/data/run/pg12]:5120 pg12@testdb=# select sf_testparameter(null,null,null,null); sf_testparameter ------------------ (,,)(1 row)[local:/data/run/pg12]:5120 pg12@testdb=# [local:/data/run/pg12]:5120 pg12@testdb=#
到此,相信大家对"Oracle与PostgreSQL内置的编程语言有什么不同"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
参数
不同
编程语言
语言
编程
类型
函数
输入
内容
实际
学习
实用
更深
较大
兴趣
多个
实用性
操作简单
方法
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
银通融和网络技术有限公司
什么软件开发大型游戏
浙江省计算机三级网络技术
旅游网站数据库如何设计
数据库管道实现数据同步
计算机网络技术资源分析
无主之地3开启无法连接服务器
义隆单片机软件开发
数据库访问技术国内外现状
美国免费金融数据库
软件开发方案书前言
商品评论数据库怎么设计
数据库 入库审核
2016年4月网络安全
数据库表字段设置自增
我的世界王国服务器
房县数据库恢复
宝塔服务器管理app
网络安全培训乱象
网吧脱离服务器管理
我国生物现在数据库
福州滴咚网络技术公司
小程序的数据库是用来干嘛的
局域网要一个服务器吗
互联网科技文化创意产业园
鑫汇软件开发
地球服务器
网络安全筑防线教案
服务器怎么寄
网络技术基础中密钥名词解释