Realiza a inclusão de registros em blocos, tornando o processo muito mais rápido.
Sintaxe
TCDBInsert( < cTable >, < cCols >, < aData > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cTable | caractere | Indica o nome da tabela onde ocorrerá a inserção de dados | X | |
cCols | caractere | Lista de campos (separados por vírgula) que será atualizados | X | |
aData | vetor | Array de dados que serão incluídos nos campos listados em cCols | X |
Retorno
Nome | Tipo | Descrição |
---|---|---|
nRet | numérico | Valor numérico informando o resultado da execução da função. |
Atenção
Esta função não está disponível para uso com RPODB=SQLITE.
Observações
- Caso a instrução seja executada sem conexão ativa, uma ocorrência de Warning é gerada no console do server: Warning - TCDBInsert - statement ignored - No connection.
- Caso a quantidade de colunas de aData seja diferente da lista de campos em cCols, uma ocorrência de erro é gerada e a thread abortada: Error - TCDBInsert - Number of columns does not match field list ( Row X )
- Caso um tipo de dado não suportado seja informado em aData, uma ocorrência de erro é gerada e a thread abortada: Error - TCDBInsert - Unexpected Element Type ( Row X Column Y )
- Caso o parâmetro cCols esteja vazio, uma ocorrência de erro é gerada e a thread abortada: Error - TCDBInsert - Invalid Empty Field List
- Caso o array aData esteja vazio, uma ocorrência de erro é gerada e a thread abortada: Error - TCDBInsert - Invalid Empty Data Array
- Caso o array aData tenha tamanho superior ao suportado pela configuração MaxStringSize, uma ocorrência de erro é gerada e a thread abortada: TC_DBInsert - Data length greater than the MaxStringSize configuration.
- O cenário ideal de uso desta função são processos de criação de base de dados, onde os novos registros não sejam inseridos por múltiplos processos – a execução da TCDBInsert com outras operações de inserção concorrente, principalmente em tabelas que não utilizam o controle de numeração automática do RECNO pelo Banco de Dados, está sujeita a falha por violação da chave primária de regisrtro.
- Em tabelas que utilizam o recurso de recno incremental, o campo R_E_C_N_O_ não deve ser informado.
Para tabelas que não utilizam este recurso, é necessário tratar o campo R_E_C_N_O_.** - A partir do DBAccess Build 20191119, não é mais necessário informar o campo R_E_C_N_O_.
Exemplos
user function test() local cTable := "T1" local aStru := {} local aRow := {} local aIns := {} local nI TCLink() if TCCanOpen(cTable) TCDelFile(cTable) endif aAdd(aStru,{"T1_CPOC","C",10,0}) aAdd(aStru,{"T1_CPOD","D", 8,0}) DBCreate(cTable,aStru,"TOPCONN") For nI := 1 to 1000 aRow := Array( len(aStru) + 1 ) aRow[1] := "Lin" + cValToChar(nI) aRow[2] := date() + nI aRow[3] := nI aadd( aIns , aRow ) if len(aIns) >= 200 if ( TCDBInsert(cTable,"T1_CPOC,T1_CPOD,R_E_C_N_O_",aIns) ) < 0 UserException(tcSQLError()) endif asize(aIns,0) endif Next DBUseArea(.T., "TOPCONN", cTable, (cTable), .F., .F.) DBGoTo(500) conout('| T1_CPOC : ' + Alltrim((cTable)->T1_CPOC) + ' |' ) conout('| R_E_C_N_O_: ' + cValToChar(recno()) + ' |' ) DBCloseArea() TCUnLink() return
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas