es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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;

=-=-==-

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para que esto funcione, puedes usar la palabra clave TABLE antes de llamar al procedimiento almacenado en la declaración SELECT. Aquí tienes la consulta actualizada:

    SELECT * FROM TABLE(dataset.sp_1('tab1', DATE('2022-01-05')));
    

    O

    WITH 
    C as TABLE(dataset.sp_1('tab1', DATE('2022-01-05')))
    SELECT * FROM C;
    

    Al utilizar la palabra clave TABLE, conviertes el conjunto de resultados del procedimiento almacenado en una tabla que puedes consultar utilizando SELECT.

Comments are closed.