create or replace procedure prc_26ai_query_run_insight(p_query_id in number, p_synthesizespeech in varchar2) as v_json_result CLOB; v_narrate_result CLOB; -- Variáveis para processamento v_aggregated_array CLOB; -- sintetizar voz ( ) v_flag_synthesizespeech varchar2(1) := p_synthesizespeech; -- [Y | N] begin for r1 in ( select id, 'SELECT json_arrayagg(c1) FROM ( SELECT JSON_OBJECT(v1.*) c1 FROM ( ' || sql_query || ' ) v1 WHERE ROWNUM <= 20 )' sql_query from tb_26ai_query_insight where query_id = p_query_id ) loop begin begin EXECUTE IMMEDIATE(R1.sql_query) INTO v_json_result; --DBMS_OUTPUT.PUT_LINE(v_json_result); v_narrate_result := FNC_26AI_RAG('Descreva o resultado obtido da query que esta contida neste JSON: ' || v_json_result || 'Não cite que se trata de um JSON, foque apenas na descrição do resultado.' || 'Esta descrição não tem objetivo técnico, de detalhes do comando, mas sim dos resultados obtidos com foco em insigths.' ,'OCI_CRED') ; if v_flag_synthesizespeech = 'Y' then -- proc_speech_synthesizespeech (p_text => v_narrate_result, -- p_filename => 'audio_' || p_query_id || '_insight_' || r1.id || '.mp3' -- ); null; end if; -- -- chamar api para gerar arquivo de audio num bucket (api: SynthesizeSpeech) -- insert into tb_26ai_query_run_insight values(p_query_id, r1.id, v_json_result, v_narrate_result, case when v_flag_synthesizespeech = 'Y' then 'audio_' || p_query_id || '_insight_' || r1.id || '.mp3' else null end); commit; exception when others then null; end; end; end loop; end; /