这是我的函数:func (a *AirlinesRepository) Get(id int) *models.Airline { airline := models.Airline{} a.DB.Get(&airline, "SELECT * FROM fn_airlines_getby_id(?)", id) return &airline}执行数据库后。获取,航空公司将所有属性设置为零值,而不是使用 sql 函数结果进行填充。我还尝试了“选择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 30STATEMENT: SELECT fn_airlines_getby_id(?)所以似乎没有解析应该去的值而不是(它适用于正常查询)sqlx?这是一个Postgres数据库,该函数存在。
1 回答
三国纷争
TA贡献1804条经验 获得超7个赞
使用Postgres的参数占位符而不是sqlx的占位符。更改自
SELECT fn_airlines_getby_id(?)
自:
SELECT * FROM fn_airlines_getby_id($1)
- 1 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
提交
取消