這篇文章主要介紹“PostgreSQL創(chuàng)建函數(shù)中的選項是什么”,在日常操作中,相信很多人在PostgreSQL創(chuàng)建函數(shù)中的選項是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PostgreSQL創(chuàng)建函數(shù)中的選項是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
從策劃到設計制作,每一步都追求做到細膩,制作可持續(xù)發(fā)展的企業(yè)網(wǎng)站。為客戶提供成都網(wǎng)站建設、成都網(wǎng)站設計、網(wǎng)站策劃、網(wǎng)頁設計、申請域名、網(wǎng)絡空間、網(wǎng)絡營銷、VI設計、 網(wǎng)站改版、漏洞修補等服務。為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,以客戶的口碑塑造優(yōu)易品牌,攜手廣大客戶,共同發(fā)展進步。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
該選項列出調用函數(shù)時應使用的transform.
transform說明了如何轉換數(shù)據(jù)類型到一種編程語言.比如使用hstore類型通過PL/Python語言來編寫函數(shù),
PL/Python無法在Python語言環(huán)境中標識hstore類型的數(shù)據(jù).語言默認使用文本,但如果出現(xiàn)數(shù)組或者鏈表,
這種默認處理就不合適了.
transform指定了兩種函數(shù):
“from SQL”:從SQL環(huán)境到編程語言.該函數(shù)在使用該語言編寫的函數(shù)時對參數(shù)進行處理.
“to SQL”:從編程語言到SQL環(huán)境.處理返回值時調用.
該選項用于PL/Java等編程語言中.
WINDOW
使用該選項,標明該函數(shù)是窗口函數(shù)(window function)而不是普通函數(shù).
IMMUTABLE | STABLE | VOLATILE
這三個會影響查詢優(yōu)化器.默認選項是VOLATILE.
IMMUTABLE:表示函數(shù)不能更改數(shù)據(jù)庫并且給定什么參數(shù)就返回什么值,100%的確定性.
STABLE:表示函數(shù)不能更改數(shù)據(jù)庫,在一次表掃描過程中,對于同樣的參數(shù)會返回相同的結果,但結果可以在SQL語句之間改變.
結果如果依賴于數(shù)據(jù)庫查找,參數(shù)變量可變時可使用該選項.
VOLATILE:在一次表掃描時,結果也可以改變.如random(),currval()函數(shù)等.
LEAKPROOF
該選項表示函數(shù)不存在副作用.除了返回值,不會reveals參數(shù)的相關信息,比如如果因為某些參數(shù)值拋出錯誤信息,
或者在錯誤信息中包含參數(shù)值,那么該函數(shù)被不是leafproof.
該選項會影響以security_barrier選項創(chuàng)建的view或者啟用row level security的數(shù)據(jù)表.
系統(tǒng)將在用戶提供的包含non-leakproof函數(shù)的條件之前執(zhí)行來自安全策略的條件和來自查詢本身的安全屏障視圖,以防止數(shù)據(jù)的意外泄漏.
標記為leakproof的函數(shù)和操作符被認為是可信的,可以在安全策略和安全屏障視圖的條件之前執(zhí)行。
CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
默認選項為CALLED ON NULL INPUT,表示如某些參數(shù)為null函數(shù)可以正常調用.函數(shù)的編寫者有責任檢查null值.
RETURNS NULL ON NULL INPUT | STRICT表示如果出現(xiàn)參數(shù)為null,則返回null.
SECURITY INVOKER | SECURITY DEFINER
SECURITY INVOKER表示以調用者的權限執(zhí)行函數(shù),這是默認選項.SECURITY DEFINER則表示以owner的權限執(zhí)行函數(shù).
PARALLEL UNSAFE | RESTRICTED | SAFE
PARALLEL UNSAFE表示不能以并行模式執(zhí)行函數(shù),如在SQL中出現(xiàn)該函數(shù)則需串行執(zhí)行,這是默認選項.
PARALLEL RESTRICTED表示函數(shù)可以并行模式執(zhí)行,但執(zhí)行者限制為并行組的leader.
PARALLEL SAFE表示無約束的并行執(zhí)行.
如函數(shù)修改了數(shù)據(jù)庫狀態(tài)或者使用子事務修改了事務狀態(tài)或者嘗試訪問序列或者改變設置(如setval),那么函數(shù)應標記為unsafe.
如函數(shù)訪問臨時表,客戶端連接狀態(tài),游標,預準備語句或者系統(tǒng)無法以并行模式同步的后端本地狀態(tài),那么應標記為restricted.
如函數(shù)實際上unsafe但標記為safe,那么會產(chǎn)生不可預知的錯位.
COST
函數(shù)執(zhí)行的估算成本,單位為cpu_operator_cost.
ROWS
函數(shù)返回的估算行數(shù).
SUPPORT
該函數(shù)使用的planner support function.
SET
進入該函數(shù)時,設置配置參數(shù)為指定的值,執(zhí)行完畢則恢復為原來的參數(shù)值.
AS
函數(shù)定義.
到此,關于“PostgreSQL創(chuàng)建函數(shù)中的選項是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
新聞名稱:PostgreSQL創(chuàng)建函數(shù)中的選項是什么-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://vcdvsql.cn/article22/djhpcc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站制作、關鍵詞優(yōu)化、Google、網(wǎng)站導航、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)