pgsql 記錄型別

2022-04-02 14:03:29 字數 1311 閱讀 3545

記錄型別:

見如下形式的變數宣告:

namerecord;

記錄變數類似於行型別變數,但是它們沒有預定義的結構,只能通過select或for命令來獲取實際的行結構,因此記錄變數在被初始化之前無法訪問,否則將引發執行時錯誤。

注:record不是真正的資料型別,只是乙個佔位符。

基本語句:

1. 賦值:

pl/pgsql中賦值語句的形式為:identifier := expression,等號兩端的變數和表示式的型別或者一致,或者可以通過postgresql的轉換規則進行轉換,否則將會導致執行時錯誤,見如下示例:

user_id := 20;

tax := subtotal * 0.06;

2. select into:

通過該語句可以為記錄變數或行型別變數進行賦值,其表現形式為:select into target select_expressions from ...,該賦值方式一次只能賦值乙個變數。表示式中的target可以表示為是乙個記錄變數、行變數,或者是一組用逗號分隔的簡單變數和記錄/行字段的列表。select_expressions以及剩餘部分和普通sql一樣。

如果將一行或者乙個變數列表用做目標,那麼選出的數值必需精確匹配目標的結構,否則就會產生執行時錯誤。如果目標是乙個記錄變數,那麼它自動將自己構造成命令結果列的行型別。如果命令返回零行,目標被賦予空值。如果命令返回多行,那麼將只有第一行被賦予目標,其它行將被忽略。在執行select into語句之後,可以通過檢查內建變數found來判斷本次賦值是否成功,如:

select into myrec * from emp where empname =myname;

if not found then

raise exception

'employee % not found

', myname;

end if;

要測試乙個記錄/行結果是否為空,可以使用is null條件進行判斷,但是對於返回多條記錄的情況則無法判斷,如:

pgsql處理文件型別資料 pgsql使用文件

pgsql使用文件 也是一種資料庫。安裝yum install postgresql server y 基礎配置 使用mkdir建立資料目錄 mkdir data postgres 使用chown賦予postgres data postgres許可權 chown postgres.postgres ...

PgSQL 日期查詢記錄

昨天有個需求給我整懵了,db裡有 days integer,comment 有效期 actived at datetime,comment 啟用日期 但是啟用日期可能為空,在啟用的時候沒有記錄過期日期,是通過計算的,然後我 sql 有點菜,搞了大半天才搞出來,所以記錄一下,需求 其實很簡單了,只不過...

記錄程式oracle到pgsql的轉換

oracle轉pgsql todate 會省略時分秒 需要時分秒使用to timestamp 取json中的資料 使用 或者 取回來的是text型別,取回來的是json型別 coalesce 代替nvl2json中取出的資料不能直接和其他字段比較,需要顯示的轉換型別 varchar 塊需要在開頭增加...