1

我有一个我想使用 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;
4

0 回答 0