我有PostgreSQL的/ PLPGSQL具有以下簽名的函數:PHP調用PostgreSQL函數 - 類型問題?
CREATE OR REPLACE FUNCTION user_login(TEXT, TEXT) RETURNS SETOF _get_session AS $$ ... $$
凡_get_session
一種觀點。從phpPgAdmin的調用時,它的功能工作正常,但是煥我把它從PHP我得到以下錯誤:
Warning: pg_query() [function.pg-query]: Query failed: ERROR: type "session_ids" does not exist CONTEXT: compile of PL/pgSQL function "user_login" near line 2 in /home/sites/blah.com/index.php on line 69
函數的定義段包含以下變量:
oldSessionId session_ids := $1;
newSessionId session_ids := $2;
域名session_ids確實存在,並且使用同一個域的其他函數在從同一個腳本調用時工作。該PHP如下:
$query = "SELECT * FROM $dbschema.user_login('$session_old'::TEXT, '$session'::TEXT)";
$result = pg_query($login, $query);
我也嘗試過這種使用::session_ids
代替::TEXT
調用函數時,但是我收到了同樣的錯誤。
幫助:O(
我會猜測,pg_query無法解析任意返回類型 - 它可以很好地處理TEXT,INT等,但可能不知道如何處理視圖。你是否嘗試過「返回記錄集」? :| – 2010-04-19 16:11:48
謝謝,我沒有,但相同的原理與數據庫中的其他功能一起工作。總共有4個返回SETOF _whatever_view。真奇怪。另一個區別是這個函數是由其他用戶運行的(它有權運行所涉及的視圖)。我無法解決這個問題:o( – CitrusTree 2010-04-19 16:14:52