亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > PostgreSQL > 正文

PostgreSQL7.0手冊-用戶手冊-19. SQL命令-CREATE FUNCTION

2019-09-08 23:33:00
字體:
來源:轉載
供稿:網友
CREATE FUNCTION
名稱
CREATE FUNCTION ― 定義一個新函數 

語法
CREATE FUNCTION name ( [ ftype [, ...] ] )
    RETURNS rtype
    AS definition   
    LANGUAGE 'langname'
    [ WITH ( attribute [, ...] ) ]
CREATE FUNCTION name ( [ ftype [, ...] ] )
    RETURNS rtype
    AS obj_file , link_symbol  
    LANGUAGE 'C'
    [ WITH ( attribute [, ...] ) ]
輸入
name 
要創建的函數名. 
ftype 
函數參數的數據類型.輸入類型可以是基本類型,組合類型或者 opaque。opaque 表明該函數接受一個非法的象 char * 這樣的類型。. 
rtype 
返回數據類型.輸入類型可以是基本類型,組合類型,setof type或者 opaque。setof 修改器表示該函數將返回套條目,而不是單條條目。 
attribute 
一個關于函數的可選信息,用于優化。目前唯一支持的屬性是 iscachable。iscachable 表示此函數在輸入相同時總是返回相同的值(也就是說,它不做數據庫查找或者是使用沒有直接在它的參數列表出現的信息)。優化器使用 iscachable 來認知對該函數的調用進行預先計算是否安全?!?
definition 
一個定義函數的字串;其含義取決于(用的)語言??梢允且粋€內部函數名,一個指向一個目標文件的路徑,一個SQL查詢或者一種過程語言的文本?!?
obj_file , link_symbol 
這種形式的 AS 子句用于動態鏈接的 C 語言函數,這時該函數在 C 源代碼里的名稱和 SQL 函數的名稱不同。字符串 obj_file 是含有可動態裝載的對象的文件名,而 link_symbol 是對象的鏈接符號,這個符號與 C 源代碼里的函數名相同?!?
langname 
可以是 'C','sql','internal' 或 'plname',這里 'plname' 是所創建過程的語言名.參考  CREATE LANGUAGE 獲取詳細信息. 
輸出
CREATE 
命令成功地執行返回的信息. 

描述
CREATE FUNCTION 允許一個 Postgres 用戶在一個數據庫里注冊一個函數.同樣這個用戶將被看作這個函數的所有者. 
  
注意
請參閱PostgreSQL 程序員手冊 關于通過函數擴展 Postgres 的章節獲取更多關于書寫外部函數的信息.Use DROP FUNCTION to remove user-defined functions. 
Postgres 允許函數“重載”;也就是說,同一個函數名可以用于幾個不同的函數,只要它們的參數可以區分它們。不過,這個功能在用于 INTERNAL 和 C 語言的函數時要小心?!?

允許輸入參數和返回值使用全部 SQL92 類型語法.不過,有些類型聲明的細節(例如, numeric 類型的精度域)是由下面的函數實現負責的,并且被 CREATE FUNCTION  命令悄悄的吞并了(也就是說,不再被識別或強制). 

兩個內部函數擁有相同 C 名稱時肯定會發生鏈接時錯誤。要解決這個問題,賦予它們不同的 C 名稱(例如,使用參數類型做為 C 名稱的一部分),然后在 CREATE FUNCTION 的 AS 子句里面聲明這些名字。如果 AS 子句為空,那么 CREATE FUNCTION 假設函數的 C 名稱與SQL名稱一樣?!?

如果用 C 語言函數重載 SQL 函數,給每個 C 語言函數的實例一個獨立的名稱,并且使用 CREATE FUNCTION 語法里的 AS 子句的不同形式來確保重載的 SQL 函數名稱正確地解釋為相應動態鏈接對象?!?
 

函數不能返回一套數值(結果). 

用法
創建一個簡單的 SQL 函數: 
CREATE FUNCTION one() RETURNS int4
    AS 'SELECT 1 AS RESULT'
    LANGUAGE 'sql';
SELECT one() AS answer;

     answer 
--------
      1
這個例子通過調用一個用戶創建的共享庫的路徑創建一個 C 函數.該路徑計算一個檢測位并且如果函數參數里的檢測位正確就返回一個 TRUE?。@些是通過使用一個 CHECK 約束實現的. 
CREATE FUNCTION ean_checkdigit(bpchar, bpchar) RETURNS bool
    AS '/usr1/proj/bray/sql/funcs.so' LANGUAGE 'c';
    
CREATE TABLE product (
    id        char(8) PRIMARY KEY,
    eanprefix char(8) CHECK (eanprefix ~ '[0-9]{2}-[0-9]{5}')
                      REFERENCES brandname(ean_prefix),
    eancode   char(6) CHECK (eancode ~ '[0-9]{6}'),
    CONSTRAINT ean    CHECK (ean_checkdigit(eanprefix, eancode))
);
這個例子創建一個在用戶定義類型 complex 和內部類型 point 之間做類型轉換的函數。該函數是用一個從 C 源代碼編譯的動態裝載的對象來實現的。對于 Postgres 而言,要自動尋找類型轉換函數,sql 函數必須和返回類型同名,而且不能重載。該函數名通過使用 SQL定義里 AS 子句的第二種類型來重載 
CREATE FUNCTION point(complex) RETURNS point
    AS '/home/bernie/pgsql/lib/complex.so', 'complex_to_point'
    LANGUAGE 'c';
該函數的 C 定義是: 
Point * complex_to_point (Complex *z)
{
        Point *p;

        p = (Point *) palloc(sizeof(Point));
        p->x = z->x;
        p->y = z->y;
                
        return p;
}
兼容性
SQL92
CREATE FUNCTION 是 Postgres 語言的擴展. 

SQL/PSM
注意: PSM 表示連續存儲模塊?。≒ersistent Stored Modules).它是一個過程化的語言,最初希望 PSM 將在1996年晚些時候正式批準為官方標準.但到了 1998年中,這些還沒有成為現實,但 PSM 有希望最終成為一個標準.
SQL/PSM CREATE FUNCTION 語法如下: 
CREATE FUNCTION name
    ( [ [ IN | OUT | INOUT ] type [, ...] ] )
     RETURNS rtype
     LANGUAGE 'langname'
     ESPECIFIC routine
     SQL-statement
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品一区久久久久| 亚洲丝袜在线视频| 777午夜精品福利在线观看| 国产精品亚洲第一区| 欧美性色视频在线| 亚洲精品美女久久| 永久免费毛片在线播放不卡| 欧美激情中文字幕在线| 久久不射热爱视频精品| 亚洲性无码av在线| 欧日韩在线观看| 欧美一级免费视频| 中文字幕最新精品| 亚洲xxxxx性| 欧美激情第6页| 亚洲欧美一区二区三区四区| 欧美天堂在线观看| 91精品国产综合久久男男| …久久精品99久久香蕉国产| 亚洲欧洲在线观看| 国产精品美女视频网站| 日韩激情av在线免费观看| 午夜精品一区二区三区av| 日韩欧美999| 青青草国产精品一区二区| 91极品视频在线| 久久久精品久久久久| 国产免费一区视频观看免费| 亚洲最新中文字幕| 成人性生交xxxxx网站| 欧美一区二区.| 91av在线免费观看| 自拍视频国产精品| 琪琪第一精品导航| 日本免费在线精品| 国产精品流白浆视频| 亚洲午夜性刺激影院| 国产精品va在线播放我和闺蜜| 欧美性猛交丰臀xxxxx网站| 国产成+人+综合+亚洲欧美丁香花| 国内久久久精品| 日韩欧美国产网站| 欧美美女15p| 国产精品自拍偷拍视频| 亚洲国产成人精品女人久久久| 日韩欧美在线播放| 国产精品日韩在线播放| 亚洲天堂开心观看| 亚洲成人亚洲激情| 色悠悠久久88| 精品久久久久久久久久国产| 国产一区二区三区中文| 日韩亚洲第一页| 亚洲一品av免费观看| 亚洲精品乱码久久久久久金桔影视| 亚洲自拍偷拍色片视频| 精品人伦一区二区三区蜜桃网站| 欧美视频在线观看 亚洲欧| 久久综合久久美利坚合众国| 欧美丰满少妇xxxx| 精品一区二区三区电影| 成人激情春色网| 亚洲国产成人久久| 在线观看欧美成人| 久久精品成人欧美大片| 两个人的视频www国产精品| 亚洲片在线观看| 欧美国产日韩一区二区三区| 亚洲国产免费av| 韩国三级日本三级少妇99| 国产精品成人观看视频国产奇米| 亚洲欧洲高清在线| 91精品久久久久久久久不口人| 国产一区二区三区在线播放免费观看| 亚洲色图50p| 精品网站999www| 美女av一区二区| 2019国产精品自在线拍国产不卡| 欧美亚洲在线视频| 国产精品18久久久久久首页狼| 精品亚洲男同gayvideo网站| 欧美性猛交xxxx久久久| 久久影院免费观看| 久久久久久美女| 国产一区视频在线播放| 97视频免费观看| 97国产在线观看| 成人福利网站在线观看| 伊人激情综合网| 一本一本久久a久久精品综合小说| 九九九久久久久久| 欧美激情按摩在线| 日韩视频中文字幕| 欧美国产日本高清在线| 日产精品久久久一区二区福利| 97人人爽人人喊人人模波多| 欧美高清一级大片| 欧美在线视频一区二区| 亚洲精品久久7777777| 亚洲国产成人精品电影| 热久久视久久精品18亚洲精品| 日韩69视频在线观看| 神马久久久久久| 亚洲精品免费网站| 亚洲国产精品电影| 91在线色戒在线| 57pao国产精品一区| 日本高清久久天堂| 亚洲成人性视频| 欧美性猛交xxxx免费看漫画| 97久久精品视频| 国产精品欧美日韩| 最近更新的2019中文字幕| 国产精品美女主播在线观看纯欲| 欧美麻豆久久久久久中文| 中文字幕亚洲综合久久| 在线播放日韩精品| 欧美日韩国产va另类| 91夜夜未满十八勿入爽爽影院| 国产精品热视频| 91精品国产自产在线老师啪| 色播久久人人爽人人爽人人片视av| 欧美日韩福利视频| 久久色精品视频| 欧美性猛交xxxx乱大交3| 日韩精品在线影院| 日韩av三级在线观看| 自拍偷拍亚洲区| 欧美大片在线看| 日韩少妇与小伙激情| 国产精品老女人视频| 日韩精品中文字幕视频在线| 亚洲成人激情在线观看| 久久久久久12| 国产精品91久久久久久| 色综合91久久精品中文字幕| 精品性高朝久久久久久久| 3344国产精品免费看| 欧美日韩xxx| 97免费在线视频| 日韩在线视频中文字幕| 日韩专区在线观看| 日韩成人激情视频| 国产精品久久久久久av福利软件| 欧美激情第一页xxx| 欧美极品少妇全裸体| 国产免费一区视频观看免费| 成人春色激情网| 日韩电影中文字幕一区| 亚洲一级一级97网| 亚洲精品视频免费| 日韩精品欧美激情| 亚洲国产欧美一区二区三区久久| 欧美另类老女人| 中文字幕日韩欧美精品在线观看| 欧美肥老妇视频| 中文字幕亚洲图片| 亚洲免费高清视频| 国产一区二区丝袜高跟鞋图片| 日韩的一区二区| 中文日韩在线视频| 日韩av中文在线| 在线看片第一页欧美| 欧美在线视频在线播放完整版免费观看|