如何使用OUT参数在Django中调用postgres函数

时间:2018-08-23 04:50:32

标签: django postgresql

我在postgres中创建了一个简单的函数,如下所示:

CREATE OR REPLACE FUNCTION test_django(p_a int, p_b int, out p_cursor  refcursor, out p_int int)
RETURNS record AS
$BODY$
begin

p_cursor := 'test_cursor';

open p_cursor for
select id, name, des from test;

p_int := 100;

END
$BODY$
LANGUAGE plpgsql;

我想通过Django调用此函数并获取2个OUT参数。一个是光标,另一个是INTEGER;

是否可以预注册Java之类的参数?谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

>>> with transaction.atomic(), connection.cursor() as cur:  
...   cur.execute('''select test_django(1,2)''')
...   a = cur.fetchone()
...   a
...   cur.execute('fetch all from test_cursor')
...   cur.fetchall()
... 
('(test_cursor,100)',)
[(2, 'aa', 'aaaaa'), (3, 'aabb', 'aaaaabbb')]

我可以很好地获取游标,但是INTEGER参数实际上位于String内,这太奇怪了...

有什么好办法解决这个问题吗?