简体   繁体   中英

bigquery execute immediate to call procedure

I need to call procedure dynamically with dataset and procedure name

execute immediate "CALL `" || "project_name" || "." || "db_name" || ".procedure`()";

But it throws error

SQL created by EXECUTE IMMEDIATE contains unsupported statement type: CallStatement

How can I call procedure with execute command

Thanks

You can use the CALL statement part of your scripting. You don't need to wrap the CALL statement in execute immediate.

EXECUTE IMMEDIATE "select 1";
CALL myDataset.UpdateSomeTables('someAccountId', retCode);

You can call a procedure dynamically with
execute immediate format("""call %.%.%""", project_id, dataset, procedure_name)

For a very special usecase I have once had to create a procedure that would dynamic call other procedures.
You can make a procedure like:

create or replace call_procedure_procedure(project_id STRING, dataset STRING, procedure_name STRING)
begin
   execute immediate format("""call %.%.%""", project_id, dataset, procedure_name)
end

then you call your new procedure with:

call call_procedure_procedure(project_id, dataset, procedure_name)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM