Oracle与PostgreSQL内置的编程语言有什么不同
发表于:2024-10-14 作者:千家信息网编辑
千家信息网最后更新 2024年10月14日,本篇内容主要讲解"Oracle与PostgreSQL内置的编程语言有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Oracle与PostgreSQ
千家信息网最后更新 2024年10月14日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=test
PostgreSQL
创建函数,参数中存在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安全错误
数据库的锁怎样保障安全
昆明软件开发工程师招聘
维护网络安全的思路对策有
梦间集选择哪个服务器
湖北金木水火互联网科技
使命召唤18一直显示连接服务器
杭州全速网络技术有
软件开发客户需求调研
湖南棋牌软件开发报价
创造与魔法哪个服务器好玩
乳蛋白检测仪器软件开发
网络安全密钥指的是什么
微信服务器APP能用不
兴华服务器
40岁学网络技术晚不晚
太原市智贤网络技术有限公司
去年单招网络安全卷子
软件开发日薪
网络安全哪个职业学院好
网络安全宏病毒实验
数据库指标体系设计及完善
for循环存入数组数据库
27了想干软件开发
互联网科技金融大会
江苏语音网络技术
怎么将csv文件导入数据库
杭州缤纷互联网络科技有限公司
网络安全人才招聘困难
服务器内存1t
本科计算机网络技术论文
重庆网络安全专业好吗