Go gorm 使用gorm和gorm日志sql:应为0个参数,得到1个

Go gorm 使用gorm和gorm日志sql:应为0个参数,得到1个,go-gorm,Go Gorm,GORM日志sql:应为0个参数,得到1个 我的代码是 func GetPipelineConfigKey(riskConfigKey string) string{ var PipelineConfigKey string sql := fmt.Sprintf("SELECT context_name FROM hawk_context_name WHERE id = (SELECT service_line_id FROM risk_predict_config_key WH

GORM日志sql:应为0个参数,得到1个

我的代码是

func GetPipelineConfigKey(riskConfigKey string) string{
    var PipelineConfigKey string
    sql := fmt.Sprintf("SELECT context_name FROM hawk_context_name WHERE id = (SELECT service_line_id FROM risk_predict_config_key WHERE config_key = '%s');", riskConfigKey)
    contextDb.Exec(sql, &PipelineConfigKey)
    return PipelineConfigKey
}

Exec
具有以下签名

func (s *DB) Exec(sql string, values ...interface{}) *DB {
values在这里是一个varargs参数,对于传递给Exec的每个变量,sql查询中都应该有一个
。您传递了1个参数,但查询不需要任何参数(否
)。这就是为什么会出现以下错误

sql: expected 0 arguments, got 1
也许您想将结果保存在
PipelineConfigKey
中。用这种方法

创建一个结果结构

type Result struct {
    Name string
}
和扫描结果

db.Raw(sql).Scan(&result)
完整代码:

type Result struct {
        Name string
}

func GetPipelineConfigKey(riskConfigKey string) string{
    sql := fmt.Sprintf("SELECT context_name FROM hawk_context_name WHERE id = (SELECT service_line_id FROM risk_predict_config_key WHERE config_key = '%s');", riskConfigKey)
    db.Raw(sql).Scan(&result)
    return result.Name
}

Exec
具有以下签名

func (s *DB) Exec(sql string, values ...interface{}) *DB {
values在这里是一个varargs参数,对于传递给Exec的每个变量,sql查询中都应该有一个
。您传递了1个参数,但查询不需要任何参数(否
)。这就是为什么会出现以下错误

sql: expected 0 arguments, got 1
也许您想将结果保存在
PipelineConfigKey
中。用这种方法

创建一个结果结构

type Result struct {
    Name string
}
和扫描结果

db.Raw(sql).Scan(&result)
完整代码:

type Result struct {
        Name string
}

func GetPipelineConfigKey(riskConfigKey string) string{
    sql := fmt.Sprintf("SELECT context_name FROM hawk_context_name WHERE id = (SELECT service_line_id FROM risk_predict_config_key WHERE config_key = '%s');", riskConfigKey)
    db.Raw(sql).Scan(&result)
    return result.Name
}