2014-02-24 92 views
1

我需要返回一些查詢,我到了那裏,以及隱式文本變量。我怎麼能得到它裏面的東西?因爲它不明白,_table_name是不是文字,但varibale?帶文本變量返回查詢

因爲我得到了這樣的錯誤

ERROR: "_table_name" relation does not exist 
LINE 1: SELECT DISTINCT "TYPES".type_id FROM "TYPES", _table_name WH... 

這裏是我的功能

CREATE OR REPLACE FUNCTION get_las_types(_table_num integer) 

    RETURNS TABLE(_type int) AS 

    $BODY$ 
    DECLARE 
     _table_name text; 

    BEGIN 
     _table_name:='well_las_data_'||_table_num; 

     RETURN QUERY SELECT DISTINCT "TYPES".type_id FROM "TYPES", _table_name WHERE "TYPES".type_id = _table_name.type_id; 
    END; 
    $BODY$ 
    LANGUAGE plpgsql; 
+0

您正在使用哪種PostgreSQL版本? – Houari

+0

@Houari最後一個。像9.2或者smth – DanilGholtsman

+0

你可以使用'format'指令:http://www.postgresql.org/docs/9.2/static/functions-string.html – Houari

回答

1

您可以通過使用新的format功能(9.1及以上)safetly構建動態查詢:

return query execute format('SELECT DISTINCT "TYPES".type_id FROM "TYPES", %I WHERE "TYPES".type_id = %I.type_id;', _table_name,_table_name); 

你可以找到其他的例子here

+0

哦謝謝多數民衆贊成我正在尋找! – DanilGholtsman