Histórico da Página
Aviso | ||
---|---|---|
| ||
Atenção: Página em construção!! |
Painel | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||
Descrição Classe para criação e manipulação de tabelas temporárias no BD
| |||||||||||||||||||||
Compatível Países: | Todos | ||||||||||||||||||||
Sistemas Operacionais: | Todos | ||||||||||||||||||||
Compatível às Bases de Dados: | Todos | ||||||||||||||||||||
Nível de Acesso: | Nível 1 (Acesso Clientes) | ||||||||||||||||||||
Idiomas: | Português, Inglês, Espanhol | Versão/Release | 12.1.5
Nota | ||
---|---|---|
| ||
DbAccess TOTVS|DBAccess 4.2 Server com build igual ou superior à 20141119 (Mar 12 2015). |
Aviso | ||
---|---|---|
| ||
Devido as características do TempDB, uma tabela temporária só é visível para a thread que realizou a sua criação, não sendo possível compartilhar a mesma tabela entre vários processos. |
Painel | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||
Sintaxe FWTemporaryTable():New( [<cAlias>], [<aFields>] )-> Objeto FWTemporaryTable Descrição Método para instanciar a classe Parâmetros
|
Painel | ||
---|---|---|
| ||
Sintaxe FWTemporaryTable():Create() Descrição Método responsável pela criação da tabela
|
Painel | ||
---|---|---|
| ||
Sintaxe FWTemporaryTable():Delete() Descrição Método responsável por efetuar a exclusão da tabela, e fechar o alias
|
Retorno Retorna um Logical conforme a deleção da tabela ter sido efetuada corretamente (a partir da LIB versão 20193101) |
Painel | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||
Sintaxe FWTemporaryTable():AddIndex( <cIndexName>, <aFields> )
Descrição Adiciona um índice na tabela. Parâmetros
|
Painel | ||
---|---|---|
| ||
Sintaxe FWTemporaryTable():GetRealName() -> cRealName Descrição Retorna o nome com o qual a tabela foi criada no BD. |
Painel | |||||
---|---|---|---|---|---|
| |||||
Sintaxe FWTemporaryTable():InsertSelectGetTableNameForTCFunctions( <cTableFrom> , <aFieldsFrom> ) ) -> cTableName Descrição Efetua carga de todos os campos baseada em um select de outra tabela, utilizando o padrão INSERT INTO SELECT. | |||||
Tipo | Descrição | Default | Obrigatório | Referência | |
cTableFrom | Caracter | Tabela da qual os valores serão carregados. | X |
|
| aFieldsFrom | Array | Array contendo o nome dos campos da tabela indicada, que deverão ser trazidos para carga | X |
Painel | ||||
---|---|---|---|---|
| ||||
Sintaxe FWTemporaryTable():InsertIntoSelectGetTableNameForQuery( <aFieldsTo>, <cTableFrom> , <aFieldsFrom> ) ) -> cRealName Descrição Efetua carga de todos os campos baseada em um select de outra tabela, utilizando o padrão INSERT INTO SELECT. | ||||
Tipo | Descrição | Default | Obrigatório | Referência |
aFieldsTo | Array | Array contendo o nome dos campos da tabela que deverão ser preenchidos | X | |
cTableFrom | Caracter | Tabela da qual os valores serão carregados. | X |
| aFieldsFrom | Array | Array contendo o nome dos campos da tabela indicada, que deverão ser trazidos para carga | X |
Painel | ||
---|---|---|
| ||
Sintaxe FWTemporaryTable():GetAlias( ) -> cAlias Descrição Retorna o alias utilizado pelo arquivo. |
Painel | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
Sintaxe FWTemporaryTable():SetFields( <aFields> ) Descrição Define os campos da estrutura.
| |
Painel | |||||
---|---|---|---|---|---|
| |||||
Sintaxe FWTemporaryTable():Zap() Descrição Limpa todos os registros da tabela temporária. Caso seja gerado algum erro no momento do zap o sistema é abortado.
|
Painel | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Sintaxe FWTemporaryTable():SetClobMemo(lClob) Descrição Informa a classe como serão criados os campos memo, se informado como .T., os campos serão criados no padrão CLOB, caso contrário os campos serão criados no padrão BLOB, que é a maneira padrão que o Protheus trabalha. Parâmetros
|
Fonte de exemplo: ExFWTemporaryTable.prw
Bloco de código | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
#include 'protheus.ch' User Function ExFWTemporaryTable() Local aFields := {} Local oTempTable Local nI Local cAlias := "MEUALIAS" Local cQuery //------------------- //Criação do objeto //------------------- oTempTable := FWTemporaryTable():New( cAlias ) //-------------------------- //Monta os campos da tabela //-------------------------- aadd(aFields,{"DESCR","C",30,0}) aadd(aFields,{"CONTR","N",3,1}) aadd(aFields,{"ALIAS","C",3,0}) oTemptable:SetFields( aFields ) oTempTable:AddIndex("indice101", {"DESCR"} ) oTempTable:AddIndex("indice202", {"CONTR", "ALIAS"} ) //------------------ //Criação da tabela //------------------ oTempTable:Create() conout("Executando a cópia dos registros da tabela: " + RetSqlName("CT0") ) //-------------------------------------------------------------------------- //Caso o INSERT INTO SELECT preencha todos os campos, este será um método facilitador //Caso contrário deverá ser chamado o InsertIntoSelect(): // oTempTable:InsertIntoSelect( {"DESCR", "CONTR" } , RetSqlName("CT0") , { "CT0_DESC", "CT0_CONTR" } ) //-------------------------------------------------------------------------- oTempTable:InsertSelect( RetSqlName("CT0") , { "CT0_DESC", "CT0_CONTR", "CT0_ALIAS" } ) //------------------------------------ //Executa query para leitura da tabela //------------------------------------ cQuery := "select * from "+ oTempTable:GetRealName() MPSysOpenQuery( cQuery, 'QRYTMP' ) DbSelectArea('QRYTMP') while !eof() for nI := 1 to fcount() varinfo(fieldname(nI),fieldget(ni)) next dbskip() Enddo //--------------------------------- //Exclui a tabela //--------------------------------- oTempTable:Delete() return |