我有一个我想使用 Diesel 调用的 SQL 函数(在 Postgres 中)。我已经用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
当我my_add
从 Postgres CLI 调用时,它可以正常工作:
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;