PostgreSQL創(chuàng)建函數(shù)中的選項(xiàng)是什么-創(chuàng)新互聯(lián)

這篇文章主要介紹“PostgreSQL創(chuàng)建函數(shù)中的選項(xiàng)是什么”,在日常操作中,相信很多人在PostgreSQL創(chuàng)建函數(shù)中的選項(xiàng)是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PostgreSQL創(chuàng)建函數(shù)中的選項(xiàng)是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

從策劃到設(shè)計(jì)制作,每一步都追求做到細(xì)膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站策劃、網(wǎng)頁設(shè)計(jì)、申請域名、網(wǎng)絡(luò)空間、網(wǎng)絡(luò)營銷、VI設(shè)計(jì)、 網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進(jìn)步。

Create Function的語法如下:

[pg12@localhost ~]$ psql
Expanded display is used automatically.
psql (12.2)
Type "help" for help.
[local:/data/run/pg12]:5120 pg12@testdb=# \help create function
Command:     CREATE FUNCTION
Description: define a new function
Syntax:
CREATE [ OR REPLACE ] FUNCTION
    name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
    [ RETURNS rettype
      | RETURNS TABLE ( column_name column_type [, ...] ) ]
  { LANGUAGE lang_name
    | TRANSFORM { FOR TYPE type_name } [, ... ]
    | WINDOW
    | IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    | PARALLEL { UNSAFE | RESTRICTED | SAFE }
    | COST execution_cost
    | ROWS result_rows
    | SUPPORT support_function
    | SET configuration_parameter { TO value | = value | FROM CURRENT }
    | AS 'definition'
    | AS 'obj_file', 'link_symbol'
  } ...
URL: /tupian/20230521/sql-createfunction.html
[local:/data/run/pg12]:5120 pg12@testdb=#

LANGUAGE
包括sql,c,internal,plpgsql等等

TRANSFORM
該選項(xiàng)列出調(diào)用函數(shù)時(shí)應(yīng)使用的transform.
transform說明了如何轉(zhuǎn)換數(shù)據(jù)類型到一種編程語言.比如使用hstore類型通過PL/Python語言來編寫函數(shù),
PL/Python無法在Python語言環(huán)境中標(biāo)識hstore類型的數(shù)據(jù).語言默認(rèn)使用文本,但如果出現(xiàn)數(shù)組或者鏈表,
這種默認(rèn)處理就不合適了.
transform指定了兩種函數(shù):
“from SQL”:從SQL環(huán)境到編程語言.該函數(shù)在使用該語言編寫的函數(shù)時(shí)對參數(shù)進(jìn)行處理.
“to SQL”:從編程語言到SQL環(huán)境.處理返回值時(shí)調(diào)用.
該選項(xiàng)用于PL/Java等編程語言中.

WINDOW
使用該選項(xiàng),標(biāo)明該函數(shù)是窗口函數(shù)(window function)而不是普通函數(shù).

IMMUTABLE | STABLE | VOLATILE
這三個(gè)會(huì)影響查詢優(yōu)化器.默認(rèn)選項(xiàng)是VOLATILE.
IMMUTABLE:表示函數(shù)不能更改數(shù)據(jù)庫并且給定什么參數(shù)就返回什么值,100%的確定性.
STABLE:表示函數(shù)不能更改數(shù)據(jù)庫,在一次表掃描過程中,對于同樣的參數(shù)會(huì)返回相同的結(jié)果,但結(jié)果可以在SQL語句之間改變.
結(jié)果如果依賴于數(shù)據(jù)庫查找,參數(shù)變量可變時(shí)可使用該選項(xiàng).
VOLATILE:在一次表掃描時(shí),結(jié)果也可以改變.如random(),currval()函數(shù)等.

LEAKPROOF
該選項(xiàng)表示函數(shù)不存在副作用.除了返回值,不會(huì)reveals參數(shù)的相關(guān)信息,比如如果因?yàn)槟承﹨?shù)值拋出錯(cuò)誤信息,
或者在錯(cuò)誤信息中包含參數(shù)值,那么該函數(shù)被不是leafproof.
該選項(xiàng)會(huì)影響以security_barrier選項(xiàng)創(chuàng)建的view或者啟用row level security的數(shù)據(jù)表.
系統(tǒng)將在用戶提供的包含non-leakproof函數(shù)的條件之前執(zhí)行來自安全策略的條件和來自查詢本身的安全屏障視圖,以防止數(shù)據(jù)的意外泄漏.
標(biāo)記為leakproof的函數(shù)和操作符被認(rèn)為是可信的,可以在安全策略和安全屏障視圖的條件之前執(zhí)行。

CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
默認(rèn)選項(xiàng)為CALLED ON NULL INPUT,表示如某些參數(shù)為null函數(shù)可以正常調(diào)用.函數(shù)的編寫者有責(zé)任檢查null值.
RETURNS NULL ON NULL INPUT | STRICT表示如果出現(xiàn)參數(shù)為null,則返回null.

SECURITY INVOKER | SECURITY DEFINER
SECURITY INVOKER表示以調(diào)用者的權(quán)限執(zhí)行函數(shù),這是默認(rèn)選項(xiàng).SECURITY DEFINER則表示以owner的權(quán)限執(zhí)行函數(shù).

PARALLEL UNSAFE | RESTRICTED | SAFE
PARALLEL UNSAFE表示不能以并行模式執(zhí)行函數(shù),如在SQL中出現(xiàn)該函數(shù)則需串行執(zhí)行,這是默認(rèn)選項(xiàng).
PARALLEL RESTRICTED表示函數(shù)可以并行模式執(zhí)行,但執(zhí)行者限制為并行組的leader.
PARALLEL SAFE表示無約束的并行執(zhí)行.
如函數(shù)修改了數(shù)據(jù)庫狀態(tài)或者使用子事務(wù)修改了事務(wù)狀態(tài)或者嘗試訪問序列或者改變設(shè)置(如setval),那么函數(shù)應(yīng)標(biāo)記為unsafe.
如函數(shù)訪問臨時(shí)表,客戶端連接狀態(tài),游標(biāo),預(yù)準(zhǔn)備語句或者系統(tǒng)無法以并行模式同步的后端本地狀態(tài),那么應(yīng)標(biāo)記為restricted.
如函數(shù)實(shí)際上unsafe但標(biāo)記為safe,那么會(huì)產(chǎn)生不可預(yù)知的錯(cuò)位.

COST
函數(shù)執(zhí)行的估算成本,單位為cpu_operator_cost.

ROWS
函數(shù)返回的估算行數(shù).

SUPPORT
該函數(shù)使用的planner support function.

SET
進(jìn)入該函數(shù)時(shí),設(shè)置配置參數(shù)為指定的值,執(zhí)行完畢則恢復(fù)為原來的參數(shù)值.

AS
函數(shù)定義.

到此,關(guān)于“PostgreSQL創(chuàng)建函數(shù)中的選項(xiàng)是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

新聞名稱:PostgreSQL創(chuàng)建函數(shù)中的選項(xiàng)是什么-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://www.muchs.cn/article22/djhpcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站制作、關(guān)鍵詞優(yōu)化、Google網(wǎng)站導(dǎo)航、動(dòng)態(tài)網(wǎng)站

廣告

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

外貿(mào)網(wǎng)站制作