MathJax

MathJax-2

MathJax-3

Google Code Prettify

置頂入手筆記

EnterproseDB Quickstart — 快速入門筆記

由於考慮採用 EnterpriseDB 或是直接用 PostgreSQL 的人,通常需要一些入手的資料。這邊紀錄便提供相關快速上手的簡單筆記 ~ 這篇筆記以 資料庫安裝完畢後的快速使用 為目標,基本紀錄登入使用的範例:

2017年2月4日 星期六

在 psql 指令界面下使用變數


作 PostgreSQL 功能驗證時,可能會需要設定臨時的變數使用。那麼在 psql 界面下要怎麼宣告變數?

其實還蠻簡單的~
要宣告變數,使用的是 psql 的 Meta-Command,\set\unset 指令進行設置。

宣告上,可以分成三種模式:

1. 物件名稱的變數
edb=# \d
                 relation 清單
 架構模式 |    名稱    |  型別  |    擁有者    
----------+------------+--------+--------------
 public   | dept       | table  | enterprisedb
 public   | emp        | table  | enterprisedb
 public   | jobhist    | table  | enterprisedb
 public   | next_empno | 序列數 | enterprisedb
 public   | salesemp   | view   | enterprisedb
(5 筆資料列)

edb=# \set myvar 'dept'
edb=# SELECT * FROM :myvar;
 deptno |   dname    |   loc    
--------+------------+----------
     10 | ACCOUNTING | NEW YORK
     20 | RESEARCH   | DALLAS
     30 | SALES      | CHICAGO
     40 | OPERATIONS | BOSTON
(4 筆資料列)

edb=# \unset myvar
edb=# SELECT * FROM :myvar;
ERROR:  syntax error at or near ":"
LINE 1: SELECT * FROM :myvar;
                      ^

2. 資料內容的變數
edb=# \d
                 relation 清單
 架構模式 |    名稱    |  型別  |    擁有者    
----------+------------+--------+--------------
 public   | dept       | table  | enterprisedb
 public   | emp        | table  | enterprisedb
 public   | jobhist    | table  | enterprisedb
 public   | next_empno | 序列數 | enterprisedb
 public   | salesemp   | view   | enterprisedb
(5 筆資料列)

edb=# \set myvar 'SALES'
edb=# SELECT * FROM dept WHERE dname = :'myvar';
 deptno | dname |   loc   
--------+-------+---------
     30 | SALES | CHICAGO
(1 筆資料列)

edb=# \unset myvar
edb=# SELECT * FROM dept WHERE dname = :'myvar';
ERROR:  syntax error at or near ":"
LINE 1: SELECT * FROM dept WHERE dname = :'myvar';
                                         ^

3. 雙引號物件名稱的變數:就是固定大小寫的意思。此範例中可以發現要求固定大寫的表格名稱會找不到。
edb=# \d
                 relation 清單
 架構模式 |    名稱    |  型別  |    擁有者    
----------+------------+--------+--------------
 public   | dept       | table  | enterprisedb
 public   | emp        | table  | enterprisedb
 public   | jobhist    | table  | enterprisedb
 public   | next_empno | 序列數 | enterprisedb
 public   | salesemp   | view   | enterprisedb
(5 筆資料列)

edb=# \set myvar 'dept'
edb=# SELECT * FROM :"myvar";
ERROR:  relation "DEPT" does not exist
LINE 1: SELECT * FROM "DEPT";
                      ^
edb=# \unset myvar
最後提醒的是,這在 GUI 界面底下(也就是 pgAdmin3、pgAdmin4,或是 EDB 企業版的 PEM Client,還是其他的 GUI,例如 Postgresql StudioPostage 或是其他云云 . . .)沒有這種功能,切記切記~


參考資料:

沒有留言:

張貼留言