PostgreSQL自定義函數(shù)的使用
基本語(yǔ)法
//建一個(gè)名字為function_name的自定義函數(shù) create or replace function function_name() returns data_type as //returns 返回一個(gè)data_type數(shù)據(jù)類(lèi)型的結(jié)果;data_type 是返回的字段的類(lèi)型; $$ //固定寫(xiě)法 ......//方法體 $$ LANGUAGE SQL; //固定寫(xiě)法 ------------------------------- CREATE OR REPLACE FUNCTION function_name(args) RETURNS return_type AS $$ DECLARE -- 變量聲明 BEGIN -- 函數(shù)體 RETURN result; END; $$ LANGUAGE plpgsql;
創(chuàng)建函數(shù)
create or replace function add(integer,integer) returns integer as $$ select $1 + $2; $$ LANGUAGE SQL;
運(yùn)行結(jié)果
調(diào)用結(jié)果
函數(shù)嵌套
CREATE FUNCTION outer_function() RETURNS void AS $$ DECLARE FUNCTION inner_function() RETURNS void AS $$ -- 內(nèi)部函數(shù)代碼 $$ LANGUAGE plpgsql; BEGIN -- 外部函數(shù)代碼 inner_function(); END; $$ LANGUAGE plpgsql;
遞歸函數(shù)
CREATE FUNCTION recursive_function(arg) RETURNS type AS $$ BEGIN IF condition THEN RETURN arg; ELSE RETURN recursive_function(arg + 1); END IF; END; $$ LANGUAGE plpgsql;
刪除函數(shù)
- 使用
DROP FUNCTION
語(yǔ)句來(lái)刪除一個(gè)或多個(gè)函數(shù)
DROP FUNCTION function_name(args);
- 如果函數(shù)不存在,使用
IF EXISTS
選項(xiàng)不報(bào)錯(cuò)
DROP FUNCTION IF EXISTS function_name(args);
- 級(jí)聯(lián)刪除
如果其他對(duì)象(如視圖或觸發(fā)器)依賴(lài)于該函數(shù),可以使用 CASCADE 選項(xiàng)來(lái)級(jí)聯(lián)刪除這些依賴(lài)對(duì)象
DROP FUNCTION function_name(args) CASCADE;
到此這篇關(guān)于PostgreSQL自定義函數(shù)的使用的文章就介紹到這了,更多相關(guān)PostgreSQL自定義函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
CVE-2019-9193之PostgreSQL?任意命令執(zhí)行漏洞的問(wèn)題
這篇文章主要介紹了CVE-2019-9193:PostgreSQL?任意命令執(zhí)行漏洞,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Postgresql數(shù)據(jù)庫(kù)之創(chuàng)建和修改序列的操作
這篇文章主要介紹了Postgresql數(shù)據(jù)庫(kù)之創(chuàng)建和修改序列的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02在PostgreSQL中使用ltree處理層次結(jié)構(gòu)數(shù)據(jù)的方法
這篇文章主要介紹了在PostgreSQL中使用ltree處理層次結(jié)構(gòu)數(shù)據(jù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03PostgreSQL 流復(fù)制認(rèn)證機(jī)制詳解
物理復(fù)制作為 PostgreSQL 高可用架構(gòu)的核心技術(shù),其安全性直接關(guān)系到數(shù)據(jù)庫(kù)集群的可靠性,本文選擇物理復(fù)制中備庫(kù)向主庫(kù)請(qǐng)求建立流復(fù)制連接的認(rèn)證過(guò)程,即 walreceiver 進(jìn)程連接主庫(kù)時(shí)的認(rèn)證機(jī)制,并結(jié)合源碼解析其實(shí)現(xiàn)原理,感興趣的朋友一起看看吧2025-05-05postgresql 實(shí)現(xiàn)啟動(dòng)、狀態(tài)查看、關(guān)閉
這篇文章主要介紹了postgresql 實(shí)現(xiàn)啟動(dòng)、狀態(tài)查看、關(guān)閉的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01postgresql數(shù)據(jù)合并,多條數(shù)據(jù)合并成1條的操作
這篇文章主要介紹了postgresql數(shù)據(jù)合并,多條數(shù)據(jù)合并成1條的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02如何解決PostgreSQL執(zhí)行語(yǔ)句長(zhǎng)時(shí)間卡著不動(dòng)不報(bào)錯(cuò)也不執(zhí)行的問(wèn)題
某日開(kāi)發(fā)同事上報(bào)一sql性能問(wèn)題,一條查詢(xún)好似一直跑不出結(jié)果,查詢(xún)了n小時(shí),還未返回結(jié)果,這篇文章主要給大家介紹了關(guān)于如何解決PostgreSQL執(zhí)行語(yǔ)句長(zhǎng)時(shí)間卡著不動(dòng)不報(bào)錯(cuò)也不執(zhí)行問(wèn)題的相關(guān)資料,需要的朋友可以參考下2024-02-02PostgreSQL中pageinspect 的擴(kuò)展使用小結(jié)
pageinspect是PostgreSQL的底層擴(kuò)展,允許數(shù)據(jù)庫(kù)管理員和開(kāi)發(fā)者直接檢查數(shù)據(jù)庫(kù)頁(yè)面的內(nèi)部結(jié)構(gòu),需超級(jí)用戶(hù)權(quán)限,適用于9.6+版本,感興趣的可以了解一下2025-06-06