BigQuery – Cómo utilizar ‘call ‘ o el resultado de un procedimiento en una instrucción Select, Insert o With
Quieres hacer algo como esto:
Crear una función dataset.sp_1(v_table STRING, v_ymd DATE) como (
BEGIN
DECLARE v_select, v_columns, v_dl_table, v_sbx_table, v_filter STRING;
Case v_table
WHEN ‘tab1’ THEN
SET v_dl_table = ‘dl_dataset.tab1’;
SET v_sbx_table = ‘sbx_dataset.tab1’;
SET v_columns = ‘Timestamp, col1, col2, col3’;
SET v_filter = ‘AND ColId IS NOT NULL’;
End CASE
);
Set v_select = ‘SELECT ‘ || v_columns || ‘ FROM ‘ || v_sbx_table|| ‘ WHERE DATE(Timestamp) = ”’ || v_ymd || ”’ ‘ || v_filter;
EXECUTE IMMEDIATE v_select;
END;
call dataset.sp_1(“tab1″,”2022-01-05”); —- Funciona bien.
=-===– Cómo hacer que esto funcione=-=-=
Select * from (call dataset.sp_1(“tab1″,”2022-01-05”));
O
WITH
C as (call dataset.sp_1(“tab1″,”2022-01-05”))
select * from C;
=-=-==-
davy.ai
Para que esto funcione, puedes usar la palabra clave
TABLE
antes de llamar al procedimiento almacenado en la declaraciónSELECT
. Aquí tienes la consulta actualizada:O
Al utilizar la palabra clave
TABLE
, conviertes el conjunto de resultados del procedimiento almacenado en una tabla que puedes consultar utilizandoSELECT
.