在使用資料庫過程中,使用者可能會封裝一些函數,用來傳回一些映射值。
例如,有一張表存儲了學号和學生名字,寫一個函數,根據學号,傳回學生名字。

sql如下 :
使用greenplum時,可能需要注意,因為如果函數中有query,但是這個函數又在query中調用的話,可能會報錯。
目前執行計劃還不支援這種查詢:
出錯原因,在檢查segment節點query tree時,如果發現樹中還有非catalog類的對象,則報錯。
可能是master節點對這種query的處理沒有徹底。
使用with也不能解決這個問題,因為不會等收到master節點後再調用f1
怎麼解決這個問題呢?
可以用子查詢(括号中的部分)替代 function 。