Este documento foi traduzido por IA. Para informações precisas, consulte a versão em inglês.
ctx.sql fornece capacidades de execução e gerenciamento de SQL, comumente usado em RunJS (como JSBlock e fluxos de eventos) para acessar o banco de dados diretamente. Suporta execução de SQL temporário, execução de modelos SQL salvos por ID, vinculação de parâmetros (binding), variáveis de modelo ({{ctx.xxx}}) e controle do tipo de resultado.
| Cenário | Descrição |
|---|---|
| JSBlock | Relatórios estatísticos personalizados, listas de filtros complexos e consultas de agregação entre tabelas. |
| Bloco de Gráfico | Salvamento de modelos SQL para alimentar fontes de dados de gráficos. |
| Fluxo de Trabalho / Ligação | Execução de SQL predefinido para obter dados e participar da lógica subsequente. |
| SQLResource | Usado em conjunto com ctx.initResource('SQLResource') para cenários como listas paginadas. |
Nota:
ctx.sqlacessa o banco de dados via APIflowSql. Certifique-se de que o usuário atual tenha permissões de execução para a fonte de dados correspondente.
| Permissão | Método | Descrição |
|---|---|---|
| Usuário Logado | runById | Executa com base em um ID de modelo SQL configurado. |
| Permissão de Configuração SQL | run, save, destroy | Executa SQL temporário, ou salva/atualiza/exclui modelos SQL. |
A lógica de frontend destinada a usuários comuns deve usar ctx.sql.runById(uid, options). Quando for necessário SQL dinâmico ou gerenciamento de modelos, certifique-se de que a função (role) atual possua permissões de configuração SQL.
| Método | Descrição | Requisito de Permissão |
|---|---|---|
ctx.sql.run(sql, options?) | Executa SQL temporário; suporta vinculação de parâmetros e variáveis de modelo. | Permissão de Configuração SQL |
ctx.sql.save({ uid, sql, dataSourceKey? }) | Salva ou atualiza um modelo SQL por ID para reutilização. | Permissão de Configuração SQL |
ctx.sql.runById(uid, options?) | Executa um modelo SQL salvo anteriormente pelo seu ID. | Qualquer usuário logado |
ctx.sql.destroy(uid) | Exclui um modelo SQL especificado por ID. | Permissão de Configuração SQL |
Nota:
run é usado para depuração de SQL e requer permissões de configuração.save e destroy são usados para gerenciar modelos SQL e requerem permissões de configuração.runById é aberto a usuários comuns; ele só pode executar modelos salvos e não permite depurar ou modificar o SQL.save deve ser chamado para persistir as alterações.| Parâmetro | Tipo | Descrição |
|---|---|---|
bind | Record<string, any> | any[] | Variáveis de vinculação. Use um objeto para marcadores :name ou um array para marcadores ?. |
type | 'selectRows' | 'selectRow' | 'selectVar' | Tipo de resultado: múltiplas linhas, linha única ou valor único. O padrão é selectRows. |
dataSourceKey | string | Identificador da fonte de dados. O padrão é a fonte de dados principal. |
filter | Record<string, any> | Condições de filtro adicionais (dependendo do suporte da interface). |
| Parâmetro | Tipo | Descrição |
|---|---|---|
uid | string | Identificador único para o modelo. Uma vez salvo, pode ser executado via runById(uid, ...). |
sql | string | Conteúdo SQL. Suporta variáveis de modelo {{ctx.xxx}} e marcadores :name / ?. |
dataSourceKey | string | Opcional. Identificador da fonte de dados. |
{{ctx.xxx}}Você pode usar {{ctx.xxx}} no SQL para referenciar variáveis de contexto. Elas são resolvidas em valores reais antes da execução:
As fontes para variáveis referenciáveis são as mesmas de ctx.getVar() (ex: ctx.user.*, ctx.record.*, ctx.defineProperty personalizado, etc.).
:name no SQL e passe um objeto { name: value } em bind.? no SQL e passe um array [value1, value2] em bind.| Finalidade | Uso Recomendado |
|---|---|
| Executar consulta SQL | ctx.sql.run() ou ctx.sql.runById() |
| Lista paginada SQL (Bloco) | ctx.initResource('SQLResource') + ctx.resource.refresh() |
| Requisição HTTP geral | ctx.request() |
ctx.sql encapsula a API flowSql e é especializado para cenários SQL; ctx.request pode ser usado para chamar qualquer API.
:name / ?) em vez de concatenação de strings para evitar injeção de SQL (SQL injection).type: 'selectVar' retorna um valor escalar, normalmente usado para COUNT, SUM, etc.{{ctx.xxx}} são resolvidas antes da execução; certifique-se de que as variáveis correspondentes estejam definidas no contexto.flowSql internamente.