CREATE FUNCTION

中文man手册

CREATE FUNCTION

NAME
SYNOPSIS
DESCRIPTION æè¿°
PARAMETERS åæ°
NOTES 注æ
EXAMPLES ä¾å
COMPATIBILITY å¼å®¹æ§
SEE ALSO åè§
è¯è
è·

NAME

CREATE FUNCTION - å®ä¹ä¸ä¸ªæ°å½æ°

SYNOPSIS

CREATE [ OR REPLACE ] FUNCTION name ( [ argtype [, ...] ] )
RETURNS rettype
{ LANGUAGE langname
| IMMUTABLE | STABLE | VOLATILE
| CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
| [EXTERNAL] SECURITY INVOKER | [EXTERNAL] SECURITY DEFINER
| AS ’definition
| AS ’obj_file’, ’link_symbol
} ...
[ WITH ( attribute [, ...] ) ]

DESCRIPTION æè¿°

CREATE FUNCTION å®ä¹ä¸ä¸ªæ°ç彿°ã CREATE OR REPLACE FUNCTION å°è¦ä¹å建ä¸ä¸ªæ°å½æ°ï¼ è¦ä¹æ¿æ¢ç°æçå®ä¹ã

妿åå«äºä¸ä¸ªæ¨¡å¼åï¼é£ä¹å½æ°å°±å¨æå®ç模å¼ä¸å建ãå¦åå®ä¼å¨å½å模å¼ä¸- åå»ºã æ°å½æ°çååä¸è½ååä¸ä¸ªæ¨¡å¼ä¸çä»»ä½å¸¦æåæ ·åæ°ç±»åç彿°ååã ä¸è¿ï¼åæ°ç±»åä¸åç彿°å¯ä»¥ååï¼è¿å«åéè½½ï¼ã

è¦æ´æ°ä¸ä¸ªç°æå½æ°çå®ä¹ï¼ä½¿ç¨ CREATE OR REPLACE FUNCTIONã æä»¬ä¸è½ç¨è¿ä¸ªæ¹æ³ä¿®æ¹ä¸ä¸ªå½æ°çåå- æèåæ°ç±»åï¼å¦æä½ è¿ä¹å¹²ï¼é£ä¹ä½ å°±ä¼å建ä¸ä¸ªæ°çï¼ä¸åç彿°ï¼ã åæ ·ï¼CREATE OR REPLACE FUNCTION ä¹ä¸ä¼å许你修æ¹ä¸ä¸ªç°æå½æ°çè¿åç±»åã è¦åè¿äºäºæï¼ä½ å¿é¡»å é¤å¹¶éæ°åå»ºå½æ°ã

妿ä½åé¤ç¶åé建ä¸ä¸ªå½æ°ï¼æ°å½æ°åæ§çå°æ¯ä¸åçå®ä½ï¼ä½ä¼ç´åç°æè§åï¼è§å¾ï¼è§¦åå¨ç- çã ä½¿ç¨ CREATE OR REPLACE FUNCTION å¯ä»¥å¨ä¸ç ´åå¼ç¨è¯¥å½æ°ç对象çåæä¸ä¿®æ¹å½æ°å®ä¹ã

å建è¿ä¸ªå½æ°çç¨æ·æä¸ºå½æ°çææèã

PARAMETERS åæ°

name

è¦å建ç彿°ååã

argtype

è¯¥å½æ°çæ°æ®ç±»åï¼å¯ä»¥ææ¨¡å¼ä¿®é¥°ï¼ã妿æçè¯ï¼åæ°ç±»åå¯ä»¥æ¯åºæ¬ç±»åï¼ä¹å¯ä»¥æ¯å¤åç±»åï¼åç±»åï¼æèåä¸ä¸ªç°æå- 段ç¸åçç±»åã

ä¸ä¸ªå段çç±»åæ¯ç¨ tablename.columnname%TYPE 表示çï¼ä½¿ç¨è¿ä¸ªä¸è¥¿å¯ä»¥å¸®å©å½æ°ç¬ç«äºè¡¨å®ä¹çä¿®æ¹ã

æ ¹æ®å®ç°è¯è¨çä¸åï¼æä»¬è¿å¯ä»¥å¨è¿ä¸é¢å£°æ "伪类å"ï¼ æ¯å¦ cstringã伪类å表示å®éçåæ°ç±»åè¦ä¹æ¯æ²¡æå®æ´å°å£°æï¼è¦ä¹æ¯å¨æ®éç SQL æ°æ®ç±»åä¹å¤ã

rettype

è¿åæ°æ®ç±»åãè¾åºç±»åå¯ä»¥å£°æä¸ºä¸ä¸ªåºæ¬ç±»åï¼å¤åç±»åï¼åç±»åï¼ æèä»ç°æå段æ·è´ãåéä¸é¢ argtype çæè¿°è·åå¦ä½å¼ç¨ä¸ä¸ªç°æç±»åçä¿¡æ¯ã

æ ¹æ®å®ç°è¯è¨çä¸åï¼æä»¬è¿å¯ä»¥å¨è¿ä¸é¢å£°æ "伪类å"ï¼ æ¯å¦ cstringã SETOF 修饰è¯è¡¨ç¤ºè¯¥å½æ°å°è¿åä¸å¥æ¡ç®ï¼ è䏿¯ä¸æ¡æ¡ç®ã

langname

ç¨ä»¥å®ç°å½æ°çè¯è¨çååã å¯ä»¥æ¯ SQLï¼Cï¼ internalï¼æèæ¯ç¨æ·å®ä¹çè¿ç¨è¯è¨ååã ï¼åè§ createlangã ï¼ ä¸ºäºä¿æåä¸å¼å®¹ï¼è¯¥ååå¯ä»¥ç¨åå¼å·åå´ã

IMMUTABLE

STABLE

VOLATILE

è¿äºå±æ§åè¯ç³»ç»æå¯¹è¯¥å½æ°ç夿¬¡è°ç¨æ¿æ¢æä¸æ¬¡æ¯å¦å®å¨ã 主è¦ç¨äºè¿è¡æ¶ä¼åã è³å°åºè¯¥å£°æä¸ä¸ªéæ©ã妿任ä½ä¸ä¸ªé½æ²¡æåºç°ï¼é£ä¹ VOLATILE æ¯ç¼ºçå设ã

IMMUTABLE è¡¨ç¤ºè¯¥å½æ°å¨ç»åºåæ ·ç忰弿¶æ»æ¯è¿åç¸åçç»æï¼ ä¹å°±æ¯è¯´ï¼å®ä¸åæ°æ®åºæ¥æ¾æèæ¯ä½¿ç¨é£äºå¹¶æ²¡æç´æ¥åºç°å¨å¶åæ°å表éé¢çä¿¡æ¯ã 妿ç»åºè¿ä¸ªé项ï¼é£ä¹ä»»ä½å¸¦çå¨é¨æ¯å¸¸éåæ°å¯¹è¯¥å½æ°çè°ç¨é½å°ç«å³æ¿æ¢ä¸ºè¯¥å½æ°çå¼ã

STABLE 表示å¨ä¸æ¬¡è¡¨æ«æéï¼å¯¹ç¸ååæ°å¼ï¼ è¯¥å½æ°å°ç¨³å®è¿åç¸åçå¼ï¼ä½æ¯å®çç»æå¯è½å¨ä¸å SQL è¯å¥ä¹é´ååã è¿ä¸ªé项对é£äºç»æåèµæ°æ®åºæ¥æ¾ï¼åæ°åéï¼æ¯å¦å½åæ¶åºï¼ï¼çç- ç彿°æ¯å¾åéçã è¿è¦æ³¨æ current_timestamp æå½æ°æ¯ stable (稳å®)çï¼å ä¸ºå®ä»¬çå¼å¨ä¸æ¬¡äºå¡ä¸ä¸ä¼ååã

VOLATILE è¡¨ç¤ºè¯¥å½æ°å¼çè³å¯ä»¥å¨ä¸æ¬¡è¡¨æ«æåæ¹åï¼ å æ- ¤ä¸ä¼åä»»ä½ä¼åãå¾å°æ°æ®åºå½æ°å¨è¿ä¸ªæ¦å¿µä¸æ¯æåçï¼ ä¸äºä¾åæ¯ random()ï¼currval()ï¼ timeofday()ã请注æä»»ä½æå¯ä½ç¨ç彿°é½å¿éå为æåç±»ï¼ å³ä½¿å¶ç»æç¸å½æè§å¾ä¹åºè¯¥è¿æ ·ï¼è¿æ ·æè½é¿åå®è¢«ä¼åï¼ä¸ä¸ªä¾å- å°±æ¯ setval()ã

CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT

STRICT

CALLED ON NULL INPUT ï¼ç¼ºçï¼è¡¨æè¯¥å½æ°å¨èªå·±çæäºåæ°æ¯ç©ºå¼çæ¶åè¿æ¯å¯ä»¥æç§æ- £å¸¸çæ¹å¼è°ç¨ã å©ä¸çäºææ¯å½æ°çä½èå¿é¡»è´è´£æ£æ¥ç©ºå¼ä»¥åç¸åºå°ååºååºã

RETURNS NULL ON NULL INPUT æ STRICT 表æå¦æå®çä»»ä½åæ°æ¯ NULLï¼æ¤å½æ°æ»æ¯è¿å NULLã 妿声æäºè¿ä¸ªåæ°ï¼å妿åå¨ NULL åæ°æ¶ä¸ä¼æ§è¡è¯¥å½æ°ï¼ èåªæ¯èªå¨å设ä¸ä¸ª NULL ç»æã

[EXTERNAL] SECURITY INVOKER
[EXTERNAL] SECURITY DEFINER

SECURITY INVOKER 表æè¯¥å½æ°å°å¸¦çè°ç¨å®çç¨æ·çæéæ§è¡ã è¿æ¯ç¼ºçãSECURITY DEFINER 声æè¯¥å½æ°å°ä»¥å建å®çç¨æ·çæéæ§è¡ã

å³é®å EXTERNAL çç®çæ¯å SQL å¼å®¹ï¼ 使¯æä»¬å SQL ä¸åçæ¯ï¼è¿ä¸ªç¹æ§ä¸ä»ä»éç¨äºå¤é¨ç彿°ï¼ æä»¥å®æ¯å¯éçã

definition

ä¸ä¸ªå®ä¹å½æ°çå串ï¼å«ä¹åå³äºè¯è¨ãå®å¯ä»¥æ¯ä¸ä¸ªåé¨å½æ°ååï¼ ä¸ä¸ªæåæä¸ªç®æ æä»¶çè·¯å¾ï¼ä¸ä¸ª SQL æ¥è¯¢ï¼æèä¸ä¸ªç¨è¿ç¨è¯- è¨åçææ¬ã

obj_file, link_symbol

è¿ä¸ªå½¢å¼ç AS åå¥ç¨äºå¨å½æ°ç C æºæä»¶éç彿°ååå SQL 彿°çåå- ä¸åçæ¶åå¯å¨æè£è½½ C è¯è¨å½æ°ã å串 obj_file æ¯åå«å¯å¨æè£è½½ç对象çæä»¶åï¼è link_symbol æ¯å½æ°ç龿¥ç¬¦å·ï¼ä¹å°±æ¯è¯¥å½æ°å¨ C æºæä»¶éçååã 妿çç¥äºé¾æ¥ç¬¦å·ï¼é£ä¹å°±å设å®å被å®ä¹ç SQL 彿°ååã

attribute

åå²éçç彿°å¯éä¿¡æ¯ãä¸é¢ç屿§å¯ä»¥å¨æ¤åºç°ï¼
isStrict

çæäº STRICT æè RETURNS NULL ON NULL INPUT

isCachable

isCachable æ¯ IMMUTABLE çè¿æ¶çç- æç©ï¼ä¸è¿åºäºåä¸å¼å®¹ï¼æä»¬ä»ç¶æ¥åå®ã

屿§åæ¯å¤§å°åæ å³çã

NOTES 注æ

请åé ‘‘User-Defined Functions’’ è·åæ´å¤å³äºä¹¦å彿°çä¿¡æ¯ã

æä»¬å许你å°å®æ´ç SQL ç±»åè¯æ³ç¨äºè¾å¥åæ°åè¿åå¼ã ä¸è¿ï¼æäºç±»å声æçç»èï¼æ¯å¦ï¼numeric ç±»åç精度åï¼æ¯ç±ä¸å±å½æ°å®ç°è´è´£çï¼ å¹¶ä¸ä¼è¢« CREATE FUNCTION å½ä»¤ææå°åæã ï¼ä¹å°±æ¯è¯´ï¼ä¸å被è¯å«æå¼ºå¶ï¼ã

PostgreSQL åè®¸å½æ°éè½½ï¼ ä¹å°±æ¯è¯´ï¼åä¸ä¸ªå½æ°åå¯ä»¥ç¨äºå ä¸ªä¸åç彿°ï¼ åªè¦å®ä»¬çåæ°å¯ä»¥åºåå®ä»¬ãä¸è¿ï¼ææå½æ°ç C ååå¿é¡»ä¸åï¼ ä¹å°±æ¯è¯´ä½ å¿é¡»ç»äºéè½½ç C 彿°ä¸åç C ååï¼æ¯å¦ï¼ä½¿ç¨åæ°ç±»åä½ä¸º C ååçä¸é¨åï¼ã

妿éå¤è°ç¨ CREATE FUNCTIONï¼å¹¶ä¸é½æååä¸ä¸ªç®æ æä»¶ï¼ é£ä¹è¯¥æä»¶åªè£è½½ä¸æ¬¡ãè¦å¸è½½åæ¢å¤è£è½½è¯¥æä»¶ï¼å¯è½æ¯å¨å¼åè¿ç¨ä¸- ï¼ï¼ä½ å¯ä»¥ä½¿ç¨ LOAD [load(7)] å½ä»¤ã

ä½¿ç¨ DROP FUNCTION å é¤ä¸ä¸ªç¨æ·å®ä¹å½æ°ã

彿°å®ä¹éé¢çä»»ä½åå¼å·æèåææ é½å¿é¡»ç¨ååä»½çæ¹å¼éé¸ã

è¦è½å®ä¹å½æ°ï¼ç¨æ·å¿é¡»å¯¹è¯¥è¯è¨æ USAGE æéã

EXAMPLES ä¾å

è¿éæ¯ä¸ä¸ªç®åçä¾åï¼ç¨äºå¸®å©ä½ å¼å§ææ¡è¿ä¸ªå½ä»¤ã æ´å¤ä¿¡æ¯åä¾åï¼åé ‘‘User-Defined Functions’’ã

CREATE FUNCTION add(integer, integer) RETURNS integer
AS ’select $1 + $2;’
LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;

COMPATIBILITY å¼å®¹æ§

å¨ SQL99 éçç¡®å®ä¹äºä¸ä¸ªCREATE FUNCTION PostgreSQL çåå®ç±»ä¼¼ä½æ¯ä¸å¼å®¹ã è¿ä¸ªå±æ§æ¯ä¸å¯ç§»æ¤çï¼å¯ä»¥ä½¿ç¨çä¸åè¯- è¨ä¹æ¯å¦æ¤ã

SEE ALSO åè§

ALTER FUNCTION [alter_function(7)], DROP FUNCTION [drop_function(7)], GRANT [grant(7)], LOAD [load(7)], REVOKE [revoke(7)], createlang(1)

è¯è

Postgresql 䏿ç½ç« ä½ä¼å¹³ <laser@pgsqldb.org>

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh