![](/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.