2017-02-16 55 views
0

我在postgres EX中設置了一個序列:seq_id_gen。當我將這個序列傳遞給我的靜態查詢時,字符串被傳入並且不會被評估。有沒有辦法去除引號?有沒有人知道一種方法來做到這一點,而無需動態構建此查詢?傳遞postgres序列作爲查詢語句參數

我的SQL查詢

INSERT into table (SELECT $1, $2, $3,$4) 

在我的功能我被

query(myquery, ['currval(\'seq_id_gen\')' , param1, param2, param3]); 

調用此查詢會發生什麼事是這種說法變得

INSERT into table (SELECT 'currval(\'seq_id_gen\')' , param1, param2, param3) 
+0

什麼是驅動程序?什麼是函數語言? –

+0

javascript,節點後端使用pg – clearner

+1

不相關,但是:爲什麼這個奇怪的插入格式?爲什麼不使用「標準」方式使用'insert into table values(...)' –

回答

0

如果你要評估SQL代碼中的一個參數,你將不得不使用這樣的動態SQL:

EXECUTE 'INSERT into table VALUES (' 
     || param1 || ', ' 
     || param2 || ', ' 
     || param3 || ', ' 
     || param4 ')'; 

確信沒有用戶生成的輸入可以用於像這樣的結構,因爲這會使您容易受到SQL injection的影響。