Psycopg2 callproc和sql参数

M4k*_*4ks 5 python psycopg2 plpgsql

我有一些SQL函数

CREATE OR REPLACE FUNCTION tools.update_company(IN company_id integer, OUT value integer)
     RETURNS integer AS
 $BODY$

BEGIN 
select * into value from function_making_int(company_id)
END;$BODY$
Run Code Online (Sandbox Code Playgroud)

并且来自Psycopg2(如果重要的话,它在Django内部)我这样做

c = connection.cursor()
c.callproc('tools.update_company', [1, ])
Run Code Online (Sandbox Code Playgroud)

但是函数返回与我给出的完全相同的输入序列,忽略结果和OUT参数.更改为IN OUT并传递一些foo值不会改变任何内容.在数据库中调用时,SQL函数按预期工作

M4k*_*4ks 1

好吧,我做了很少的研究,并且检查了 psycopg2 代码 - 这个函数的当前实现只是做

select * from function_name(params)
return params
Run Code Online (Sandbox Code Playgroud)

所以它不会以任何方式修改任何内容。