Stored procedures 找到BigQuery存储过程SQL%RowQuery

Stored procedures 找到BigQuery存储过程SQL%RowQuery,stored-procedures,google-bigquery,bigquery-udf,Stored Procedures,Google Bigquery,Bigquery Udf,如何检查存储过程中的SQL语句是否成功返回了一行或多行。下面是我的存储过程,我在其中检查特定表是否有重复项。我不知道如何在存储过程中编写IF语句 创建或替换过程my_project.LOGGING.check_dup_prc(项目名称字符串、数据集名称字符串、表名称字符串、日期id日期、cols字符串、查找不到的重复字符串) 开始声明sql字符串; 设置sql='Select date',cols | | |','| |'从'| |项目名称| | |'中计数(1).'|数据|集合| | | |

如何检查存储过程中的SQL语句是否成功返回了一行或多行。下面是我的存储过程,我在其中检查特定表是否有重复项。我不知道如何在存储过程中编写IF语句

创建或替换过程my_project.LOGGING.check_dup_prc(项目名称字符串、数据集名称字符串、表名称字符串、日期id日期、cols字符串、查找不到的重复字符串)
开始声明sql字符串;
设置sql='Select date',cols | | |','| |'从'| |项目名称| | |'中计数(1).'|数据|集合| | | | | | | | | | | | | | |'按日期分组',| | cols | | | | | | | | | | |有计数(*;
立即执行(SQL);
如果SQL%ROWSFOUND,则
找到重复项
其他的
找到重复项
结束;
结束;

我建议将sql编写为:

声明rowsFound BOOL;
设置sql='Select count(*)>0,从'| |项目| | | |'.| |数据|设置| | | | | | | | |表| | | | | |其中日期=@date id按日期分组,| | cols;
使用date\u id作为date\u id,在rowsFound中执行IMMEDIATE(SQL);
请注意,date_id也作为参数@date_id传入,建议始终这样

您还可以在中找到有关
的更多信息,并使用
从中执行即时命令

您还应该调整sql,确保它只吐出1行,以使
进入
工作

更新:以防需要捕获多行

声明rowsFound数组;
设置sql='Select';
在rowsFound中执行IMMEDIATE(SQL);

谢谢。这个解决方案非常适合我。嗨,如果查询返回多行,我应该使用哪个变量来捕获所有结果?在我的答案中添加了一个示例