我有一個pgSQL函數聲明爲:SOCI,pgSQL函數返回表的記錄 - type_conversion不工作
CREATE FUNCTION auth.read_session(session_id varchar) RETURNS auth.sessions
它返回從表中auth.sessions一個記錄。 我有一個SOCI type_conversion,當 我運行select * from auth.sessions where id = :id
時,它工作得很好。 它在找到匹配記錄並且結果爲NULL時有效。 然而,當我改變聲明:
select * from auth.read_session('invalid');
我得到異常:
在執行不允許這種類型空值 「SELECT * FROM auth.read_session( '無效')」 。
我嘗試列出列,通過soci ::指標等 我不能得到它的工作。 異常來自基礎type_conversion <>。
在類型轉換,traits.h有評論指出:
//默認的特性類type_conversion,作爲通過對 行::得到()//當沒有實際的轉換是必要的。
爲什麼不需要轉換?是的,我的函數返回表類型「auth.sessions」的記錄。 它是否應該返回記錄,以便轉換啓動?
是的,醫生說: 「如果最後一個查詢碰巧不返回行,空值將返回」。當時我並不確定,因爲在psql中,相同的查詢以某種方式顯示我「空行」而不僅僅是NULL。我不知道它是如何完成的,因爲未設置echo_hidden並不會顯示任何魔法。但psql似乎遵循聲明的返回類型,併產生en空元組而不是NULL。 – PadThink