1. 程式人生 > >PostgreSQL 之 Function NOTICE

PostgreSQL 之 Function NOTICE

原帖地址:http://zhenghaoju700.blog.163.com/blog/static/13585951820116782843994/


先安裝一個PostgreSQL(見補充知識)

比較Oracle PL/SQL 

PL/SQL 中有 dbms_output.put_line("This is a log"); 可以進行簡單的除錯

當然我們PostgreSQL 也有相應的函式 RAISE NOTICE 'This is a log %', param;

% 佔位符 param 替換的值

RAISE 還有其他級別 DEBUG,LOG,INFO,EXCEPTION 

可以在配置檔案中配置它們 postgresql.conf 中的 client_min_messages 和 log_min_messages

RAISE EXCEPTION 會暫停函式的執行,其他級別預設應該是顯示到客戶端。


舉一個簡單的例子吧

舉例之前 首先確定自己的資料庫有沒有安裝 plpgsql

select * from pg_language;

如果沒有的話 

create language plpgsql;

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格
簡單例子

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格

測試一下

select TESTRAISE('this is a message');

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格
為什麼只有 Notice 和 INFO 資訊呢?

通過 find / -name  postgresql 查詢postgresql 安裝目錄

[email protected]:/etc/postgresql/8.4/main$ pwd

/etc/postgresql/8.4/main

在etc下檢視配置檔案  vim postgresql.conf 

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格
看到客戶端最小顯示級別是NOTICE 所以必須大於Notice 才顯示 這就是log為什麼沒有顯示

DEBUG 沒顯示 是因為它們只有DEBUG(1-5)

這樣就可以放心除錯了!!!!


補充知識:

安裝環境 Ubuntu 11.03

1.sudo apt-get install postgreSQL

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格

2.sudo passwd postgres 改密碼 這個使用者是資料庫自己建立的

3.啟動服務 service postgresql start

4.su  postgres

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格

5.psql 開啟互動shell

6.\l 列出所有資料庫

PostgreSQL 之 Function NOTICE - zhenghaoju700 - zhenghaoju700 的部落格
參考資料:

http://www.postgresonline.com/journal/archives/83-Quick-Guide-to-writing-PLPGSQL-Functions-Part-3-NOTICES,-RECURSION,-and-more.html