欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Oracle與PostgreSQL的區(qū)別有哪些

這篇文章主要講解了“Oracle與PostgreSQL的區(qū)別有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Oracle與PostgreSQL的區(qū)別有哪些”吧!

在昌吉等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需網(wǎng)站設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,網(wǎng)絡(luò)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),昌吉網(wǎng)站建設(shè)費用合理。

Oracle

SQL> CREATE OR REPLACE function func_out(pi_in NUMBER,pi_out1 out number,pi_out2 out varchar2)
  2  return date
  3  as
  4    v_date date;
  5  begin
  6    v_date := sysdate;
  7    pi_out1 := pi_in;
  8    pi_out2 := pi_in;
  9    return v_date;
 10  end;
 11  /
函數(shù)已創(chuàng)建。
SQL>
SQL> set serveroutput on
SQL> declare
  2    v_date date;
  3    v_out1 number;
  4    v_out2 varchar2(200);
  5  begin
  6    v_date := func_out(1,v_out1,v_out2);
  7    dbms_output.put_line('v_date = '||v_date||';v_out1 = '||v_out1||';v_out2 = '||v_out2);
  8  end;
  9  /
v_date = 14-2月 -20;v_out1 = 1;v_out2 = 1
PL/SQL 過程已成功完成。
SQL>

輸出參數(shù)分別是number、varchar2,函數(shù)返回date類型。

PostgreSQL

[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE function func_out(pi_in int,pi_out1 out int,pi_out2 out text) 
pg12@testdb-# returns date
pg12@testdb-# as
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_date date;
pg12@testdb$# begin 
pg12@testdb$#   v_date := current_date();
pg12@testdb$#   pi_out1 := pi_in;
pg12@testdb$#   pi_out2 := to_char(pi_in);
pg12@testdb$#   return v_id; 
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=#

提示結(jié)果類型必須為record

[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE function func_out(pi_in int,pi_out1 out int,pi_out2 out text) 
pg12@testdb-# returns record
pg12@testdb-# as
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_date date;
pg12@testdb$# begin 
pg12@testdb$#   v_date := current_date;
pg12@testdb$#   pi_out1 := pi_in;
pg12@testdb$#   pi_out2 := to_char(pi_in);
pg12@testdb$#   return null; 
pg12@testdb$# end;
pg12@testdb$# $$ LANGUAGE 'plpgsql';
ERROR:  RETURN cannot have a parameter in function with OUT parameters
LINE 11:   return null; 
                  ^
[local:/data/run/pg12]:5120 pg12@testdb=#

改為record后,返回null值,提示如存在OUT參數(shù)不允許返回值。

[local:/data/run/pg12]:5120 pg12@testdb=# CREATE OR REPLACE function func_out(pi_in int,pi_out1 out int,pi_out2 out text) 
pg12@testdb-# returns record
pg12@testdb-# as
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_date date;
pg12@testdb$# begin 
pg12@testdb$#   v_date := current_date;
pg12@testdb$#   pi_out1 := pi_in;
pg12@testdb$#   pi_out2 := pi_in;
pg12@testdb$#   return; 
pg12@testdb$# end;
pg12@testdb$# $$ LANGUAGE 'plpgsql';
CREATE FUNCTION
[local:/data/run/pg12]:5120 pg12@testdb=#

創(chuàng)建成功,嘗試調(diào)用

[local:/data/run/pg12]:5120 pg12@testdb=# do
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_ret record;
pg12@testdb$#   v_out1 int;
pg12@testdb$#   v_out2 text;
pg12@testdb$# begin
pg12@testdb$#   v_ret := func_out(1,v_out1,v_out2);
pg12@testdb$#   raise notice 'ret is : %d',v_ret;
pg12@testdb$# end
pg12@testdb$# $$
pg12@testdb-# ;
ERROR:  function func_out(integer, integer, text) does not exist
LINE 1: SELECT func_out(1,v_out1,v_out2)
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  SELECT func_out(1,v_out1,v_out2)
CONTEXT:  PL/pgSQL function inline_code_block line 7 at assignment
[local:/data/run/pg12]:5120 pg12@testdb=#

提示沒有相應(yīng)的函數(shù),原因是PG會忽略O(shè)UT參數(shù),把out參數(shù)去掉重新調(diào)用

[local:/data/run/pg12]:5120 pg12@testdb=# do
pg12@testdb-# $$
pg12@testdb$# declare
pg12@testdb$#   v_ret record;
pg12@testdb$#   v_out1 int;
pg12@testdb$#   v_out2 text;
pg12@testdb$# begin
pg12@testdb$#   v_ret := func_out(1);
pg12@testdb$#   raise notice 'ret is : %',v_ret;
pg12@testdb$# end
pg12@testdb$# $$;
NOTICE:  ret is : (1,1)
DO
[local:/data/run/pg12]:5120 pg12@testdb=# 
[local:/data/run/pg12]:5120 pg12@testdb=#

返回的是record,第一個值為1,第二個值為1

1.PG會忽略輸出參數(shù),判斷一個函數(shù)是否是同一個函數(shù),僅判斷輸入?yún)?shù);

2.如存在OUT參數(shù),PG函數(shù)無法返回結(jié)果,只能通過OUT參數(shù)返回。

感謝各位的閱讀,以上就是“Oracle與PostgreSQL的區(qū)別有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Oracle與PostgreSQL的區(qū)別有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

網(wǎng)站欄目:Oracle與PostgreSQL的區(qū)別有哪些
分享路徑:http://chinadenli.net/article46/pigceg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序移動網(wǎng)站建設(shè)網(wǎng)站建設(shè)網(wǎng)站維護(hù)品牌網(wǎng)站建設(shè)網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)