![](/img/trans.png)
[英]How to store the results from a stored procedure into a temp table or a view in BigQuery?
[英]Can i create table or insert data from stored procedure results use CALL in BigQuery?
我想使用存储过程结果如何创建表或插入数据。 但我的例子不起作用
DECLARE startDate, endDate STRING;
SET startDate = '20200801';
SET endDate = '20200802';
CALL `myproject.dataset.procedure1`(startDate, endDate);
CREATE OR REPLACE TABLE `myproject.dataset.table`
PARTITION BY date
您的 SQL 意味着该过程返回一个隐式数据集,可以在以后的 CREATE TABLE 中使用,但这不是 BigQuery 存储过程的工作方式。
一种方法是将 CREATE TABLE 移动到过程内部
DECLARE startDate, endDate STRING;
SET startDate = '20200801';
SET endDate = '20200802';
CREATE PROCEDURE `myproject.dataset.procedure1`(startDate STRING, endDate STRING)
BEGIN
CREATE OR REPLACE TABLE `myproject.dataset.table`
AS SELECT ... FROM ... WHERE date >= startDate AND date <= endDate -- just my guess
PARTITION BY date
END;
CALL `myproject.dataset.procedure1`(startDate, endDate);
如果出于某种原因您不想在过程主体中创建表,或者,您可以使用临时表将结果集带出过程,例如
DECLARE startDate, endDate STRING;
SET startDate = '20200801';
SET endDate = '20200802';
CREATE PROCEDURE `myproject.dataset.procedure1`(startDate STRING, endDate STRING)
BEGIN
CREATE TEMP TABLE myQueryResults
AS SELECT ... FROM ... WHERE date >= startDate AND date <= endDate -- just my guess
PARTITION BY date
END;
CALL `myproject.dataset.procedure1`(startDate, endDate);
CREATE OR REPLACE TABLE `myproject.dataset.table`
AS SELECT * FROM myQueryResults
PARTITION BY date
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.