### [postgresql record 使用](http://www.blogjava.net/agun/archive/2009/04/08/264508.html)
今天在做postgresql 存儲過程的時候,遇到了一個問題,找了好多資料沒有解決,最后經過思考終于解決了
創建一個存儲過程

CREATE?OR?REPLACE?FUNCTION?test(OUT?name?character?varying,?OUT?_cur?refcursor?)

??RETURNS?record?AS

$BODY$

DECLARE

????_geom?geometry;

BEGIN

??name?=?'11';

??open?_cur??for???SELECT?id,name?FROM?test_tab;

??--id?='222';?

END;

$BODY$

??LANGUAGE?'plpgsql'?VOLATILE

??COST?100;

ALTER?FUNCTION?test()?OWNER?TO?pg;
就是上面這個存儲過程,我需要調用這個存儲過程得到輸出(返回的參數)。
文檔中這樣描述的:
記錄類型(record):
紀錄變量類似行類型變量,但是它們沒有預定義的結構。 它們在SELECT或者FOR命令中獲取實際的行結構。 一個行變量的子結構可以在每次賦值的時候改變。 這樣做的一個結果是:在一個記錄變量被賦予數值之前,它沒有子結構, 并且任何對其中的數據域進行訪問的企圖都將產生一個運行時錯誤。
請注意?RECORD?不是真正的數據類型,只是一個占位符。 我們還應該意識到在把一個?PL/pgSQL?函數聲明為返回record類型的時候, 它和一個記錄變量的概念并不完全相同,即使這個函數可能使用一個記錄變量保存它的結果也如此。 在兩種情況下,在書寫函數的時候,實際的行結構都是不知道的,但是對于返回?record?的函數來說, 實際的結構是在調用它的查詢被分析的時候決定的,而行變量可以在運行中改變其行結構。
使用方法:如獲得上面函數的返回結果
select ok.name,ok._cur from test() as ok(name character varying,_out refcursor)
但是這樣會報錯誤
ERROR:? a column definition list is only allowed for functions returning "record"
解決方法:
直接使用函數名稱+"."的方式解決
select test.name,test._cur from test()
- 數據表
- 模式Schema
- 表的繼承和分區
- 常用數據類型
- 函數和操作符-一
- 函數和操作符-二
- 函數和操作符-三
- 索引
- 事物隔離
- 性能提升技巧
- 服務器配置
- 角色和權限
- 數據庫管理
- 數據庫維護
- 系統表
- 系統視圖
- SQL語言函數
- PL-pgSQL過程語言
- PostgreSQL 序列(SEQUENCE)
- PostgreSQL的時間-日期函數使用
- PostgreSQL 查看數據庫,索引,表,表空間大小
- 用以查詢某表的詳細 包含表字段的注釋信息
- PostgreSQL 系統表查看系統信息
- postgre存儲過程簡單實用方法
- PostgreSQL實用日常維護SQL
- PostgreSQL的時間函數使用整理
- 命令
- pg_ctl控制服務器
- initdb 初始化數據庫簇
- createdb創建數據庫
- dropdb 刪除數據庫
- createuser創建用戶
- dropuser 刪除用戶
- psql交互式工具
- psql命令手冊
- pg_dump 數據庫轉儲
- pg_restore恢復數據庫
- vacuumdb 清理優化數據庫
- reindexdb 數據庫重創索引
- createlang 安裝過程語言
- droplang 刪除過程語言
- pg_upgrade 升級數據庫簇
- 調試存儲過程
- 客戶端命令-一
- 客戶端命令-二
- 使用技巧
- PostgreSQL刪除重復數據
- postgresql 小技巧
- PostgreSQL的10進制與16進制互轉
- PostgreSQL的漢字轉拼音
- Postgres重復數據的更新一例
- PostgreSQL使用with一例
- PostgreSQL在函數內返回returning
- PostgreSQL中的group_concat使用
- PostgreSQL數據庫切割和組合字段函數
- postgresql重復數據的刪除
- PostgreSQL的遞歸查詢(with recursive)
- PostgreSQL函數如何返回數據集
- PostgreSQL分區表(Table Partitioning)應用 - David_Tang - 博客園
- PostgreSQL: function 返回結果集多列和單列的例子
- 利用pgAgent創建定時任務
- 淺談 PostgreSQL 類型轉換類似Oracle
- postgresql在windows(包括win7)下的安裝配置
- PostgreSQL簡介、安裝、用戶管理、啟動關閉、創建刪除數據庫 (2010-11-08 12-52-51)轉載▼標簽: 雜談分類: PostgreSQL
- PostgreSQL的generate_series函數應用
- PostgreSQL 8.3.1 全文檢索(Full Text Search)
- postgresql record 使用
- 備份恢復
- PostgreSQL基于時間點恢復(PITR)
- Postgresql基于時間點恢復PITR案例(二)
- Postgres邏輯備份腳本
- Postgres invalid command \N數據恢復處理