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

首頁 > 數據庫 > PostgreSQL > 正文

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

2019-09-08 23:32:59
字體:
來源:轉載
供稿:網友
CREATE LANGUAGE
名稱
CREATE LANGUAGE ― 為函數定義一個新的語言 

語法
CREATE [ TRUSTED ] PROCEDURAL LANGUAGE 'langname'
    HANDLER call_handler
    LANCOMPILER 'comment'
輸入
TRUSTED 
TRUSTED 說明對該語言的調用句柄是安全的;也就是說,它不會提供給非特權用戶饒過訪問限制的功能.如果忽略這個關鍵字,只有具有Postgres 超級用戶權限的人可以使用這個語言創建新的函數(如 'C' 語言). 
langname 
新的過程化語言的名稱.語言名是大小寫無關的.一個過程化語言不能超越Postgres 內建的語言. 
HANDLER call_handler 
call_handler 是預先注冊過的函數名,它將被調用于執行PL過程. 
comment 
LANCOMPILER 參數是將被插入 pg_language 表 LANCOMPILER 字段的字串.當前,Postgres 不使用這個字段. 
輸出
CREATE 
語言成功創建后返回的信息. 
ERROR: PL handler function funcname() doesn't exist 
如果函數 funcname() 不存在,返回此信息. 

描述
使用 CREATE LANGUAGE,Postgres 用戶可以在 Postgres 里注冊一個新的語言.因而,函數和觸發器過程可以用這種新語言定義.要注冊新語言用戶必須具有 Postgres 超級用戶權限. 
書寫 PL 句柄
過程語言的調用句柄必須用一種編譯語言,比如說 'C',并且在 Postgres 里注冊成一個無參數輸入,返回值是 opaque 類型(一個用于未聲明或未定義類型的容器)的函數.這就避免了調用句柄直接被查詢當作函數調用. 
但是,要想在該句柄提供的語言里進行PL函數或觸發器過程實際調用,就必須提供參數. 

當從觸發器管理器調用時,唯一的參數是該過程的 pg_proc 對象ID.所有從觸發器管理器來的其他信息都可以通過全局量CurrentTriggerData 指針找到. 
當從函數管理器里調用時,參數是過程 pg_proc 入口的對象標識(object ID),傳遞給PL函數的參數個數,在FmgrValues 一個結構里的參數和一個指向布爾變量的指針,函數通過這個指針告訴調用者返回值是否SQL NULL.

取得 pg_proc 表和分析被調過程參數和返回值類型的任務屬于調用句柄.過程中的 CREATE FUNCTION 的 AS 子句可在 pg_proc 表的 prosrc 字段里找到.這里有可能是過程語言的源文件本身(像 PL/Tcl),或者是一指向一個文件的路徑或是其他任何一個告訴調用句柄如何處理細節的東西.
注意
使用 CREATE FUNCTION 創建函數. 
使用 DROP LANGUAGE 刪除一個過程語言. 

請參考 pg_language 獲取更多信息: 

        Table "pg_language"
   Attribute   |  Type   | Modifier
---------------+---------+----------
 lanname       | name    |
 lanispl       | boolean |
 lanpltrusted  | boolean |
 lanplcallfoid | oid     |
 lancompiler   | text    |

 lanname  | lanispl | lanpltrusted | lanplcallfoid | lancompiler
----------+---------+--------------+---------------+-------------
 internal | f       | f            |             0 | n/a
 C        | f       | f            |             0 | /bin/cc
 sql      | f       | f            |             0 | postgres
因為所有過程語言的調用句柄都必須在 Postgres 里用'C' 語言注冊,因而它繼承了所有 'C' 函數的功能和限制. 
目前,過程語言的定義一旦建立就不能更改. 
 

用法
下面是一個用 'C' 寫的PL 句柄的模板. 
#include "executor/spi.h"
#include "commands/trigger.h"
#include "utils/elog.h"
#include "fmgr.h"        /* for FmgrValues struct */
#include "access/heapam.h"
#include "utils/syscache.h"
#include "catalog/pg_proc.h"
#include "catalog/pg_type.h"

Datum
plsample_call_handler(
     Oid       prooid,
     int       pronargs,
     FmgrValues     *proargs,
     bool      *isNull)
{
     Datum          retval;
     TriggerData    *trigdata;

     if (CurrentTriggerData == NULL) {
          /*
           * Called as a function
           */

          retval = ...
     } else {
          /*
           * Called as a trigger procedure
           */
          trigdata = CurrentTriggerData;
          CurrentTriggerData = NULL;

          retval = ...
     }

     *isNull = false;
     return retval;
}
只需要在打點的地方添加幾千行代碼就可以完成 PL 調用句柄.參考 CREATE FUNCTION 獲取如何將其編譯到一個可裝載模塊里面去. 
下面的命令用于注冊例子過程語言: 

CREATE FUNCTION plsample_call_handler () RETURNS opaque
    AS '/usr/local/pgsql/lib/plsample.so'
    LANGUAGE 'C';
CREATE PROCEDURAL LANGUAGE 'plsample'
    HANDLER plsample_call_handler
    LANCOMPILER 'PL/Sample';
兼容性
SQL92
CREATE LANGUAGE 是 Postgres 擴展.在 SQL92 里 沒有 CREATE LANGUAGE 語句.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产欧美日韩精品| 欧美日韩激情美女| 日韩中文有码在线视频| 国产999在线| 国产精品久久久久久久久久免费| 国产精品国产三级国产专播精品人| 在线精品视频视频中文字幕| 成人春色激情网| 国自产精品手机在线观看视频| 欧美综合国产精品久久丁香| www.久久草.com| 一本久久综合亚洲鲁鲁| 51色欧美片视频在线观看| 亚洲第一区第一页| 国产日韩欧美视频在线| 成人精品一区二区三区| 国产亚洲美女久久| 国产欧美精品xxxx另类| 亚洲第一区第二区| 亚洲精品v天堂中文字幕| 精品在线观看国产| 欧美电影《睫毛膏》| 78m国产成人精品视频| 国产欧美日韩丝袜精品一区| 欧美麻豆久久久久久中文| 欧洲美女7788成人免费视频| 97国产精品免费视频| 国产欧美精品va在线观看| 欧美性xxxxhd| 欧美色视频日本版| 欧美日韩成人在线观看| 91免费国产网站| 欧美野外猛男的大粗鳮| 亚洲国产精品久久久久| 91九色精品视频| 一区二区三区精品99久久| 亚洲午夜久久久久久久| 成人在线免费观看视视频| 精品亚洲男同gayvideo网站| 国产精品av免费在线观看| 国产精品美女视频网站| 国内久久久精品| 国产欧美日韩精品在线观看| 成人久久久久久久| 欧美老肥婆性猛交视频| 日韩精品在线播放| 成人有码在线视频| 国产有码在线一区二区视频| 亚洲成人免费在线视频| 青青久久aⅴ北条麻妃| 国产欧美亚洲精品| 日韩欧亚中文在线| 亚洲另类激情图| 日韩在线中文视频| 日韩免费在线播放| 欧美精品在线视频观看| 中文字幕精品—区二区| 热久久免费视频精品| 欧美大片在线免费观看| 久久久视频在线| 亚洲第一区在线观看| 国内外成人免费激情在线视频| 92看片淫黄大片看国产片| 久久久噜噜噜久久中文字免| 亚洲国产99精品国自产| 亚洲一区二区福利| 亚洲专区在线视频| 亚洲xxx自由成熟| 午夜精品一区二区三区在线视| 国产+人+亚洲| 久久av红桃一区二区小说| 亚洲美女又黄又爽在线观看| 久久亚洲影音av资源网| 欧美日韩日本国产| 亚洲一区免费网站| 欧美一区二区三区……| 亚洲精品白浆高清久久久久久| 成人久久一区二区| 九九精品视频在线| 欧美日韩在线视频一区二区| 海角国产乱辈乱精品视频| 51色欧美片视频在线观看| 66m—66摸成人免费视频| 在线日韩欧美视频| 亚洲人精选亚洲人成在线| 精品香蕉一区二区三区| 欧美激情亚洲精品| 欧美专区在线播放| 一区二区三区美女xx视频| 欧美激情图片区| 午夜精品久久久99热福利| 成人久久久久久久| 久久久av一区| 91久久国产精品| 欧美激情精品久久久久久黑人| 国产精品露脸av在线| 欧美色视频日本高清在线观看| 欧美综合在线观看| 1769国内精品视频在线播放| 久久资源免费视频| 韩国19禁主播vip福利视频| 亚洲精品自拍视频| 欧美高清视频在线播放| 精品精品国产国产自在线| 影音先锋欧美在线资源| 亚洲自拍偷拍福利| 一区国产精品视频| 国产精品福利在线观看| 精品亚洲aⅴ在线观看| 久久成人精品视频| 亚洲一区二区三区四区视频| 欧美激情成人在线视频| 久久精品99无色码中文字幕| 亚洲精品99999| 欧美日韩亚洲系列| 中文字幕免费精品一区| 亚洲精品成人久久| 日韩欧美在线观看| 日韩中文字幕视频在线| 538国产精品视频一区二区| 影音先锋欧美在线资源| 国产伊人精品在线| 中文字幕欧美精品在线| 亚洲国产精品99| 亚洲精品永久免费精品| 亚洲第一网站免费视频| 日韩高清人体午夜| 亚洲美女喷白浆| 日韩美女福利视频| 欧美www视频在线观看| 国产精品视频免费在线| 久久久精品国产亚洲| 国产午夜精品麻豆| 91精品国产91久久久久福利| 成人激情电影一区二区| 91sao在线观看国产| 精品国内自产拍在线观看| 久久躁狠狠躁夜夜爽| 成人免费大片黄在线播放| 激情亚洲一区二区三区四区| 在线午夜精品自拍| 丝袜情趣国产精品| 久久亚洲精品小早川怜子66| 亚洲欧美日韩图片| 亚洲国产精品大全| 国产主播在线一区| 中文字幕亚洲欧美在线| 国产精品久久久久久av| 国产精品白嫩美女在线观看| 亚洲国产欧美一区二区三区同亚洲| 国产欧美日韩精品丝袜高跟鞋| 亚洲国产精品yw在线观看| 91精品久久久久久久久不口人| 热门国产精品亚洲第一区在线| 亚洲精品久久久久中文字幕二区| 国产精品第一视频| 久久久久久久久久av| 色伦专区97中文字幕| 久久影院中文字幕| 国产一区二区三区直播精品电影| 国产精品日韩在线播放| 秋霞av国产精品一区| 国产日韩av在线播放| 欧美日韩综合视频网址|