我有一个SQL函数(在Postgres中),我想使用Diesel进行调用。我已经使用sql_function!
宏对其进行了声明,并且可以将函数称为OK。但是我无法获得返回值-它总是返回1
,我假设它是行数。如何获得实际的返回值?
sql_function! {
fn my_add(a: Int4, b: Int4) -> Int4;
}
let my_add_fn = my_add(2, 4);
let result = diesel::select(my_add_fn).execute(&conn).unwrap();
dbg!(&result); // This prints 1. Should be 6
当我从Postgres CLI调用my_add
时,它可以正常工作:
select my_add(2, 4);
my_add
--------
6
(1 row)
这是my_add
函数
CREATE OR REPLACE FUNCTION my_add(
a integer,
b integer
)
RETURNS integer
AS $$
BEGIN
return a + b;
END;
$$ LANGUAGE plpgsql
IMMUTABLE;