Árvore de páginas

Tabelas Temporárias Tradicionais


No exemplo abaixo, eu crio uma tabela temporária tradicional no banco de dados, e uso no AdvPL o identificador temporário para o meu processo com o nome de "_TMP1", e obtenho o nome real da tabela temporária para ser possível executar queries ou instruções SQL diretamente na tabela, e abro a tabela em modo ISAM para inserção / alteração / consulta de dados.

cTmpID := '#TMP1'
DBCreate(cTmpID,aStru,"TOPCONN")
cTmpName := TCConfig("GETTEMPNAME="+cTmpID)
conout("Nome Real no SGDB : "+cTmpName)
DBUseArea(.T., "TOPCONN", cTmpID, "TMP", .F., .F.) // Temporária tradicional faz abertura com o nome usado no DBCreate


Tabela temporária compartilhada

No exemplo abaixo, a criação da tabela temporária compartilhada DEVE usar o identificador FIXO "%SHTMP%", e obter o nome da tabela para a abertura logo após a criação da tabela. 

cTmpID := '%SHTMP%'
DBCreate(cTmpID,aStru,"TOPCONN")
cTmpName := TCConfig("GETTEMPNAME="+cTmpID)
conout("Nome real no SGDB : "+cTmpName)
DBUseArea(.T., "TOPCONN", cTmpName, "TMP", .T., .F.) // Temporária compartilhada faz abertura com o nome REAL da tabela


A sequência é praticamente a mesma, com as seguinte diferenças : 

  • A tabela temporária compartilhada usa um identificador de nome fixo para a criação 
  • A abertura da tabela em modo ISAM ( USE / DBUseArea ) deve usar o nome REAL da tabela no banco, obtido após a criação da tabela.
  • Para a tabela temporária compartilhada ser usada por outros processos, eles precisam saber / receber o nome real da tabela, que somente o processo que criou a tabela consegue determinar após a criação. 




  • Sem rótulos