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

这是我的函数:


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 30

STATEMENT:  SELECT fn_airlines_getby_id(?)

所以似乎没有解析应该去的值而不是(它适用于正常查询)sqlx?


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


叮当猫咪
浏览 135回答 1
1回答

三国纷争

使用Postgres的参数占位符而不是sqlx的占位符。更改自SELECT fn_airlines_getby_id(?)自:SELECT * FROM fn_airlines_getby_id($1)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go