为了账号安全,请及时绑定邮箱和手机立即绑定

Go SQLX sqlx.DB Get(“sql_function”) 不返回任何值

Go SQLX sqlx.DB Get(“sql_function”) 不返回任何值

Go
叮当猫咪 2022-09-05 10:40:38
这是我的函数: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)


查看完整回答
反对 回复 2022-09-05
  • 1 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信