返回顶部
首页 > 资讯 > 数据库 >Oracle与PostgreSQL内置的编程语言有什么不同
  • 874
分享到

Oracle与PostgreSQL内置的编程语言有什么不同

2024-04-02 19:04:59 874人浏览 薄情痞子
摘要

本篇内容主要讲解“oracle与postgresql内置的编程语言有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle与Postgresql内置

本篇内容主要讲解“oraclepostgresql内置的编程语言有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“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 on
TEST-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$# begin
pg12@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$# begin
pg12@testdb$#   return 1;
pg12@testdb$# end;
pg12@testdb$# $$ LANGUAGE 'plpgsql';
ERROR:  RETURN cannot have a parameter in function with OUT parameters
LINE 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$# begin
pg12@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_testparameter
select 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$# begin
pg12@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 record
pg12@testdb-#   AS $$
pg12@testdb$# begin
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=# \df sf_testparameter
List of functions
-[ RECORD 1 ]-------+------------------------------------------------------------
Schema              | public
Name                | sf_testparameter
Result data type    | record
Argument data types | p1 text, p2 integer, p3 text, INOUT p4 integer, OUT p5 text
Type                | 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 exist
LINE 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 record
pg12@testdb-#   AS $$
pg12@testdb$# begin
pg12@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内置的编程语言有什么不同”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle与PostgreSQL内置的编程语言有什么不同

本文链接: https://lsjlt.com/news/63510.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Oracle与PostgreSQL内置的编程语言有什么不同
    本篇内容主要讲解“Oracle与PostgreSQL内置的编程语言有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle与PostgreSQL内置...
    99+
    2024-04-02
  • C#与其他编程语言有什么不同之处
    C#(C Sharp)是一种面向对象的编程语言,由微软公司开发。与其他编程语言相比,C#在语法、特性和应用领域上有一些不同之处。下面将详细介绍C#与其他编程语言的不同之处。1. 语法和结构:C#的语法和结构类似于C和C++,但相对于这两种语...
    99+
    2023-10-22
    C#类 C#基础知识 C ​​编程
  • Oracle与PostgreSQL子查询有什么不同
    本篇内容主要讲解“Oracle与PostgreSQL子查询有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle与PostgreSQL子查询有什么...
    99+
    2024-04-02
  • Java语言与C语言有什么不同
    Java语言与C语言有什么不同?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 Java和C语言虽有相同性,但两者也有一定的不同。Java程序是面向对象的一种简单、...
    99+
    2023-05-31
    java c语言 ava
  • Oracle与PostgreSQL拆分分区有什么不同
    本篇内容主要讲解“Oracle与PostgreSQL拆分分区有什么不同”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle与PostgreSQL拆分分区有...
    99+
    2024-04-02
  • PostgreSQL 11与PostgreSQL 12的数字输出有什么不同
    本篇内容介绍了“PostgreSQL 11与PostgreSQL 12的数字输出有什么不同”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希...
    99+
    2024-04-02
  • Python编程不同于其他编程语言的优点是什么
    这篇文章将为大家详细讲解有关Python编程不同于其他编程语言的优点是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python有很多的优点方便我们在计算机应用的技术方面,但是真正了解P...
    99+
    2023-06-17
  • PostgreSQL 12和PostgreSQL 11的tpcc有什么不同
    这篇文章主要讲解了“PostgreSQL 12和PostgreSQL 11的tpcc有什么不同”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PostgreS...
    99+
    2024-04-02
  • C语言与Go编程语言的异同比较
    C语言与Go编程语言的异同比较 随着计算机科学的不断发展,各种编程语言层出不穷,其中C语言和Go编程语言作为两种广泛应用的编程语言,各自具有独特的特点和优势。本文将从语法结构、并发编程...
    99+
    2024-04-02
  • go语言和其他语言有什么不同
    go语言和其他语言的不同之处有:1、Go语言的语法对比其他语言更加直观,减少了开发和维护的时间和精力;2、与其他语言需要不同机制实现并发不同,Go语言通过协程和通道提供了轻量级的并发编程方式;3、与其他语言需要手动管理内存相比,Go语言可以...
    99+
    2023-07-10
  • python和go语言有什么不同
    今天就跟大家聊聊有关python和go语言有什么不同,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,...
    99+
    2023-06-14
  • Oracle与PostgreSQL的DDL语句与事务有什么区别
    这篇文章主要介绍“Oracle与PostgreSQL的DDL语句与事务有什么区别”,在日常操作中,相信很多人在Oracle与PostgreSQL的DDL语句与事务有什么区别问题上存在疑惑,小编查阅了各式资料...
    99+
    2024-04-02
  • C语言与Go编程语言的共同点辨析
    C语言与Go编程语言的共同点辨析 在计算机编程领域中,C语言和Go编程语言都是备受推崇的语言之一。虽然它们在设计理念、语法结构和用途方面存在一些差异,但也有一些共同点。本文将分析C语言...
    99+
    2024-04-02
  • 不同语言中内存管理与Go语言内存管理的差异
    go 语言的内存管理与传统语言(如 c++++、java)不同:传统语言:采用手动内存管理,程序员负责分配和释放内存块。go 语言:采用垃圾回收(gc),自动管理内存,程序员无需手动管理...
    99+
    2024-04-11
    go语言 内存管理 c++
  • Python中的数组容器对象与其他编程语言有何不同?
    在计算机编程中,数组是一种基本的数据结构,它可以容纳多个相同类型的数据元素。在Python中,数组是一种容器对象,类似于列表,但是数组中的元素必须是相同类型的。Python中的数组对象是通过NumPy库实现的,而其他编程语言中的数组容器对...
    99+
    2023-08-20
    数组 容器 对象
  • 编程领域内为什么要有那么多的语言
    一、多样的需求 不同的应用场景和问题可能需要不同的编程语言来解决。例如,Web开发领域可以使用JavaScript,科学计算可以使用Python,系统级编程可以使用C/C++,移动应用可以使用Java或Kotlin等。每种语言都有其擅长的领...
    99+
    2023-10-29
    要有 那么多 域内
  • 不同的编程语言输出“HelloWorld”代码
    对很多人来说,每当学习一门新的编程语言,写下的第一行代码可能都是“Hello,World!“。因此,”Hello,World!" 已经成...
    99+
    2022-12-29
    不同语言输出 “Hello World” 输出 “Hello World”
  • 不同语言的函数测试与覆盖率有什么区别?
    函数测试通过黑盒和白盒测试验证函数功能,而代码覆盖率衡量了测试用例覆盖的代码部分。不同语言(如 python 和 java)的测试框架、覆盖率工具和特性不同。实战案例展示了如何使用 py...
    99+
    2024-04-27
    测试 覆盖率 python
  • 深入比较:Go语言与主流编程语言的异同
    Go语言作为一种相对年轻的编程语言,在近年来吸引了越来越多的开发者的关注。与主流的编程语言相比,Go语言具有许多独特的特点和功能。本文将从语法特性、并发编程、性能等方面深入比较Go语言...
    99+
    2024-03-08
    go语言 比较 主流编程 安全传输
  • 探索Go语言与传统编程语言的异异同点
    探索Go语言与传统编程语言的异同点 前言: 作为一个新兴的编程语言,Go语言在近年来逐渐受到了开发者们的关注与喜爱。相较于传统的编程语言,Go语言在很多方面有着独特的设计理念和特点。本...
    99+
    2024-03-07
    go语言 比较 传统编程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作