Go SQLX sqlx.DB Get("sql_function") 没有 return 任何值

Go SQLX sqlx.DB Get("sql_function") does not return any value

这是我的功能:

func (a *AirlinesRepository) Get(id int) *models.Airline {
   airline := models.Airline{}

   a.DB.Get(&airline, "SELECT * FROM fn_airlines_getby_id(?)", id)

   return &airline
}

执行 DB.Get 后,航空公司将所有属性设置为零值,而不是用 sql 函数结果填充。 我也试过“SELECT fn_airlines_getby_id(?)”和“fn_airlines_getby_id(?)”

航空公司具有属性:

type Airline struct {
  Id   int64  `db:"id"`
  Name string `db:"name"`
}

而函数如下:

CREATE OR REPLACE FUNCTION fn_airlines_getby_id(p_id INT)
RETURNS TABLE (id INT, name VARCHAR) AS
$$
BEGIN
    RETURN QUERY
    SELECT a.id AS id, a.name AS name FROM airlines as a WHERE a.id = p_id;
END
$$ LANGUAGE plpgsql;

更新: 查看 Postgres 的日志,我发现了下一个:

ERROR:  syntax error at or near ")" at character 30
STATEMENT:  SELECT fn_airlines_getby_id(?)

看来 sqlx 没有解析应该代替 ? 的值(它适用于正常查询)

这是一个 Postgres 数据库并且该函数存在。

使用 Postgres 的参数占位符代替 sqlx 占位符。 变化自

SELECT fn_airlines_getby_id(?)

收件人:

SELECT * FROM fn_airlines_getby_id()