Google bigquery sql子查询作为参数存在于BigQuery中的游标

Google bigquery sql子查询作为参数存在于BigQuery中的游标,google-bigquery,netezza,Google Bigquery,Netezza,我在前面的一篇文章()中找到了一种在bigquery上声明游标的方法。当游标子查询不作为参数出现时,这种方法非常有效 CREATE or replace PROCEDURE myproc(varchar(256)) RETURNS INT4 LANGUAGE NZPLSQL AS BEGIN_PROC declare sqlstr alias for $1; ---- sqlStr is a parameter r1 record;

我在前面的一篇文章()中找到了一种在bigquery上声明游标的方法。当游标子查询不作为参数出现时,这种方法非常有效

CREATE or replace PROCEDURE  myproc(varchar(256))
    RETURNS INT4
    LANGUAGE NZPLSQL
AS 
BEGIN_PROC 
 declare 
  sqlstr alias for $1;              ---- sqlStr is a parameter
  r1 record;
 begin 
  FOR r1 IN EXECUTE sqlstr         ---- sqlStr is evaluated after that it boils down to cursor statement.
  loop 
   insert into t1 values r1.c1;
  end loop;
 end;
END_PROC@
目前我正在进行Netezza的构建。它的行为实际上类似于游标构造,除了这里,当前的sql是一个动态sql。首先执行此动态sql,然后将构造归结为一个简单的游标语句

考虑以下用例,其中子查询作为参数存在

CREATE or replace PROCEDURE  myproc(varchar(256))
    RETURNS INT4
    LANGUAGE NZPLSQL
AS 
BEGIN_PROC 
 declare 
  sqlstr alias for $1;              ---- sqlStr is a parameter
  r1 record;
 begin 
  FOR r1 IN EXECUTE sqlstr         ---- sqlStr is evaluated after that it boils down to cursor statement.
  loop 
   insert into t1 values r1.c1;
  end loop;
 end;
END_PROC@
是否有类似的方法在BigQuery中将子查询作为参数来声明游标?

正式地说,s和都在BigQuery中可用,并且有很好的文档记录。
实际上,使用循环来模拟实际表的游标是非常无效的,在BigQuery中也是一个禁忌,除非您有这样的用例,这是唯一的方法
但在几乎100%的情况下,您可以以批处理方式(而不是使用游标)表达您的逻辑


同时,如果表没有那么大(例如lookup tab le),您可以将表行选择到数组中,然后通过运行execute immediate的数组元素循环,得到结果并将其插入到目标表中

我也在做第二段中提到的事情。我遇到的问题是如何存储
executeimmediate
的结果。我目前正在尝试使用
INTO
子句,但是对于如何使用
ARRRAY
数据结构存储查询的完整结果集,我有一个难题。可以解释如何使用
子句存储
立即执行
的结果吗?你的问题很一般-因此答案是这样的。在我看来,它完全回答了你提出的问题!发布新的问题,包括具体的细节,你的用例和你的问题的具体例子,你会得到具体的答案。同时,如果有帮助的话,考虑投票表决。