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

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

本篇内容主要讲解"甲骨文与一种数据库系统内置的编程语言有什么不同",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"甲骨文与一种数据库系统内置的编程语言有什么不同"吧!

神谕和一种数据库系统都提供了内置的编程语言(PL/SQL vs PL/pgSQL),在输入输出参数的声明上有较大的不同,如输入参数中存在输入/输出参数,甲骨文的函数可以有返回值,但宜在家长指导下观看的不允许有返回值,只能通过参数返回。

Oracle

创建函数

TEST-orcl @ DESKTOP-v 430 tu 3 creatorreplaceffects SF _ TEST参数(p1varchar 2,p2int,p3varchar2,p4inoutint)

2返回varchar2

3is

四开始

5p 4:=1;

6返回“测试”;

7结束

8/

已创建函数。执行

来自dual的TEST-orcl @ DESKTOP-v 430 t3selectsf _ TEST参数(null,null,null, P4);

从双重的中选择sf_testparameter(null,null,null,p4)

*

错误线路1:

ORA-06572:函数SF _ testparametersshasoutarguments不能在结构化查询语言中执行,但可以在PL/SQL中执行

TEST-orcl @ DESKTOP-v 430 t3setserveroutputon

TEST-orcl @ DESKTOP-v 430 t3declare

2p 4数字

3retvarchar 2(100);

四开始

5ret :=SF _ test参数(null、null、null、P4);

6 DBMS _输出。put _ line(' P4=' | | P4 | | ',ret=' | | ret);

7结束

8/

p4=1,ret=测试PostgreSQL

创建函数,参数中存在inout类型的参数,返回值必须与该参数类型一样,而且返回不能返回实际值。

[local :/data/run/pg12]:5120 pg12 @ testdb=# creatoreplaceffects SF _ test参数(p1text,p2int,p3text,inoutp4int)

pg12@testdb-#RETURNStext

pg12@testdb-#AS$$

pg12@testdb$#begin

pg12 @ testdb $ #返回“testdb

pg12 @ testdb $ # end

pg12 @ testdb $ # $ $ LANguage ' pl pgsql ';

错误:函数结果类型必须是

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内置的编程语言有什么不同”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/76886.html

(0)

相关推荐

  • PHP Excel官方读取的方法有哪些

    技术PHP Excel官方读取的方法有哪些这篇文章主要讲解了“PHP Excel官方读取的方法有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP Excel官方读

    攻略 2021年11月17日
  • 什么是进程间通信

    技术什么是进程间通信这篇文章主要介绍“什么是进程间通信”,在日常操作中,相信很多人在什么是进程间通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是进程间通信”的疑惑有所帮助!接下来,

    攻略 2021年10月23日
  • 塞下曲拼音版古诗,北师大版五年级下册的古诗有哪些?

    技术塞下曲拼音版古诗,北师大版五年级下册的古诗有哪些?千里送鹅毛缅伯高将鹅贡唐朝,山高路远遥塞下曲拼音版古诗。钙阳湖失去,倒地哭号号。上复唐天子,可饶缅伯高。礼轻人意重,千里送鹅毛。秋浦歌(唐)李白 炉火照天地,红星乱紫

    生活 2021年10月20日
  • 如何进行MongoDB查询文档

    技术如何进行MongoDB查询文档如何进行MongoDB查询文档,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。查询文件使用inventory集合。插入inv

    攻略 2021年11月4日
  • 如何理解java方法的返回值

    技术如何理解java方法的返回值这篇文章主要介绍“如何理解java方法的返回值”,在日常操作中,相信很多人在如何理解java方法的返回值问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何理

    攻略 2021年10月20日
  • 苹果手机怎么换ip地址,苹果手机ip地址怎么修改

    技术苹果手机怎么换ip地址,苹果手机ip地址怎么修改方法如下: 先在苹果手机的主屏上找到“设置”应用,打开它苹果手机怎么换ip地址。
    在设置列表中点击“无线局域网”一栏。接下来找到当前手机已经连接的无线网络,在网络名称的

    生活 2021年10月19日