PL pgSQL學習筆記之五

2021-09-22 10:50:31 字數 1047 閱讀 8447

39.3. 宣告

塊中使用的所有的變數必須在塊的宣告節中進行宣告。(唯一的例外是,子乙個for迴圈中,在乙個整數範圍內輪詢的迴圈變數被自動認為是整型變數,而只for迴圈中,輪詢乙個游標的變數被自動宣告為記錄變數。)

pl/pgsql 變數可以是任何sql資料型別,如integer,varchar,還有char等。

下面是變數宣告的一些個例子:

user_id

integer

;quantity numeric(5);

url

varchar

;myrow tablename

%rowtype;

myfield tablename.columnname

%type;

arow record;

變數宣告的語法是:

name [

constant

] type [

collate collation_name ][

not null ][

expression

];

如果給出

default 子句,則在進入塊的時候,該變數會被賦予此初始值。如果沒有給定default子句,在變數會被賦予sql null值。如果指定了constant選項,在會防止變數在初始化後被更改,因此在塊的範圍內會保持為常量。collate選項指定了一套為變數所用的編碼集。如果指定了not null,則賦予該變數乙個空值會導致執行時錯誤。所有宣告為not null的變數必須有乙個非空的預設值。

乙個變數的預設值會在每次進入塊的時候被評估和設定(不是僅僅在函式被呼叫時才執行)。因此,舉個例子來說,給乙個timestamp型別的變數賦預設值now(),會導致在當前函式呼叫的時間被賦值給此變數,而不是此函式中預編譯時候的值。

例子:

quantity integer

default32;

url

varchar :=

'';user_id constant integer :=

10;

PL pgSQL學習筆記之六

39.3.1.宣告函式引數 傳遞給函式的引數被用 1 2等依次類推的標誌符命名。作為可選項,為了提高可讀性,可以為 n 引數名稱定義別名。此後,既可以用數字標誌符也可以用別名來指代引數值。有兩種方式來建立別名。推薦使用的方法是在create function命令你個中給引數乙個名字,例如 creat...

PL pgSQL學習筆記之十

39.3.3.型別拷貝 variable type type提供了變數或者表列的資料型別。你可以用這個來宣告將持有這些資料庫值得變數。例如,假定在你的users表中你有一列,名稱為 user id。為了定義乙個和users.user id擁有同樣資料型別的資料型別,你可以寫 user id user...

PL pgSQL學習筆記之二

sql是 postgresql和其他大多數關係型資料庫作為查詢語言而使用的語言。它可移植,並容易學習。但是sql語句必須被資料庫伺服器逐條地執行。這意味著你的客戶應用必須向資料庫傳送每一條查詢,等待它被處理,接收並處理結果,進行一些計算,然後再依次類推送出更多的查詢。所有這些導致程序間通訊,如果你的...