im当前无法使用Golang中的V2 API使用参数化查询。通常没有参数,要处理查询的代码将是:
database_query := client.Query(report.Query)
database_query.QueryConfig.Dst = table_result
job, err := database_query.Run(ctx)
假设我们不使用命名的参数。让我们模拟2个参数并将其附加到API(https://github.com/googleclodplatform/google-cloud-go/blob/blob/master/master/master/bigquery/query.go.go)的请求中:
var params [2]string
params[0] = "currency"
params[1] = "price"
ParametersL := make([]bigquery.QueryParameter, 0)
for _,element := range params {
temp := bigquery.QueryParameter{}
temp.Value=element
ParametersL = append(ParametersL,temp)
}
database_query := client.Query(report.Query)
database_query.QueryConfig.Dst = table_result
database_query.QueryConfig.Parameters= ParametersL
提供了您设法挤压"?"进入查询的适当位置,您要么会出现一个错误,要么在来自或另一个之后丢失?未被认可。使用 @命名参数也是如此。我是否错过了一些Cruzial,还是不支持Golang API的参数?
您需要将UseStandardSQL
设置为QueryConfig
的一部分,因为仅使用标准SQL支持查询参数。您还需要确保设置QueryParameter
s的Type
属性,该属性应为"STRING"
。当然,虽然支持位置参数,但我仍然建议使用命名参数,因为如果您需要在某个时候修改查询字符串,它们使重构更容易。