从.NET 6编写的Cloud Function调用BigQuery存储过程报错
问题解决:BigQuery存储过程调用语法错误
错误原因
代码中调用存储过程时用单引号包裹了存储过程全名,这违反了BigQuery的语法规范。BigQuery调用存储过程的正确方式是直接使用项目ID.数据集.存储过程名,不需要额外添加单引号。另外你定义了skuId参数,但在CALL语句里未传入,也需要补充。
修正后的代码
var testsku = 1414; var parameters = new BigQueryParameter[] { new BigQueryParameter("skuId", BigQueryDbType.Int64, testsku), }; BigQueryClient client = BigQueryClient.Create(projectID); // 移除存储过程名的单引号,并传入参数占位符 string query = @"CALL xxxxxxx.xxxxxx.fraudskus(@skuId)"; BigQueryJob job = client.CreateQueryJob( sql: query, parameters: parameters, options: new QueryOptions { UseQueryCache = false }); // 等待任务完成 job.PollUntilCompleted(); // 统计返回行数 int numOrders = 0; foreach (BigQueryRow row in client.GetQueryResults(job.Reference)) { numOrders++; } message = "Num of rows = " + numOrders;
关键修正点
- 移除
CALL语句中存储过程名的单引号:CALL 'xxxxxxx.xxxxxx.fraudskus'()→CALL xxxxxxx.xxxxxx.fraudskus(@skuId) - 在
CALL语句中添加参数占位符@skuId,与定义的BigQueryParameter对应,确保参数正确传递给存储过程
修改后即可正常调用BigQuery存储过程并获取返回结果。
内容的提问来源于stack exchange,提问作者AVWS
相关产品推荐
相关产品推荐

