如何使用变量通过 pgx 驱动程序获取不同的表?

这是一个获取法国谚语的函数:


func (r *proverbRepo) SelectFrByDegree(search string) (proverbs []domain.Proverb, err error) {

    rows, err := r.Db.Query(context.Background(), `SELECT ID, proverb

        FROM proverbs_fr 

        WHERE proverb % $1

        ORDER BY proverb <-> $1 DESC LIMIT 5

    `, search)

    if err != nil {

        return

    }


    for rows.Next() {

        var prov domain.Proverb

        err = rows.Scan(&prov.ID, &prov.Literal)

        if err != nil {

            return

        }

        proverbs = append(proverbs, prov)

    }

    return

}

有时我想从 per say proverbs_bzh 表中获取另一个谚语表。是否可以使用变量名获取不同的表?


SELECT * FROM $1

例如...


侃侃尔雅
浏览 95回答 1
1回答

小唯快跑啊

这不是绑定变量的意图。它应该用于查询重用的数据输入。如果表未知,则无法解析查询并重用执行计划。因此,您的选择是替换字符串。警告:如果表名来自外部源,请务必检查它是否是正确的标识符(提示:防止 SQL 注入)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go