Oracle与PostgreSQL内置的编程语言有什么不同
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"Oracle与PostgreSQL内置的编程语言有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle与PostgreSQ
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
咖啡
广州淘业互联网络科技
新华互联网科技学校
互联网科技社
中资互联网科技
上海互联网科技有限公司
互联网未来科技
宜安科技 互联网金融
唐信互联网科技 大连
顺玮阁互联网科技
广州紫鲸互联网科技
互联网金融科技委员会
联恩商钥互联网科技有限公司
深圳市运趣互联网科技有限公司
栖莱科技互联网股份有限公司
互联网经济与金融科技
互联网科技大奖都有哪些公司
互联网科技如何创业
陕西九四连强互联网科技有限公司
宁波允成互联网科技有限公司
智能科技公司是互联网公司吗
互联网科技战争
互联网科技集团
菲比寻常互联网科技
卫星互联网科技股票
上海宁丞科技互联网
想开互联网科技公司怎么样
天津腾达互联网科技有限公司
东莞新华互联网科技学校
广州三三互联网科技有限公司