Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css

Pagetitle
TCAlter
TCAlter

Altera a estrutura de uma tabela.

Sintaxe

Bloco de código
collapsefalse
TCAlter( 

...

< cTable 

...

>, 

...

< aEstruturaAtual >, < aEstruturaNova >, [ @nErro ] )

...


Parâmetros

...

Vetor.Numérico

Nome

Tipo

Descrição

Obrigatório

Referência

cNome

cTable

Caracter

caractere

Indica o nome da tabela que será alterada.

X

 

aEstruturaAtual

Vetor

vetor

Indica o array que contém as informações dos campos atuais da tabela.

X

 

aEstruturaNova

vetor

Indica o array que contém a nova estrutura desejada para a tabela

.

X

 

nErro

numérico

Caso ocorra algum erro na alteração da estrutura, o número do erro do DBAccess será retornado através desta variável.

 

X

Retorno

Nome

Tipo

Descrição

lRet

...

lógico

...

Retorna .T.

...

se a alterção for realizada com sucesso

...

, caso contrário, retorna .F.

Observações

Caso, o retorno seja falso (.F.), deve-se verificar <nErro>. Se <nErro> ainda for nulo (NIL), a instrução de alteração da estrutura não passou pela pré-validação do Protheus, não sendo enviada ao banco. Caso não seja NIL, a instrução foi enviada ao banco de dados, e não obteve sucesso, sendo retornado na propriedade <nErro> o número da ocorrência do DBAccess relacionada ao erro.

Observações

Nota
icontrue
titleAtenção

É responsabilidade do programador passar a estrutura atual corretamente. Caso seja passada uma estrutura diferente da atual, pode haver perda de uma ou mais colunas da tabela.

...

A função determina internamente as ações a serem tomadas para adequar a estrutura atual para a nova estrutura informada, mantendo os dados na tabela. Nesta operação, dependendo do SGDB em questão, um ou mais índices existentes para a tabela podem ser apagados para que a operação seja completa.

...

Ao comparar as estruturas, são determinadas originalmente quatro ações para cada campo da estrutura

...

  • Campo inserido Coluna Inserida ( existe na nova estrutura, mas não existe na estrutura atual )Campo eliminado
  • Coluna Eliminada ( existe na estrutura atual, mas não existe na nova estrutura ) Campo mantido
  • Coluna Mantida ( existe em ambas as estruturas, com os mesmos atributos – atributos – tipo e tamanhos ) 
  • Campo alterado Coluna Alterada ( existe em ambas as estruturas, porém com tipo ou tamanho diferentes ) 

Nota
icontrue
titleAtenção

Na mudança de atributos em alteração de campo, a única conversão de tipo suportada é N (numérico) para C (caracter). Caso seja realizada uma conversão de tipo não suportada, todos os dados da coluna em questão serão apagados.

...

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
USER FUNCTION

Exemplo

...

 ex_TCAlter()

...


  Local cTableNAme := "TTABLE"

...


  Local nTopErr := NIL

...


   
  // conecta com o dbaccess

...


  nStatus := 

...

TCLink("POSTGRES/teste","192.168.189.128")

...


   
  If nStatus < 0

...


   UserException("TOPCONN - Falha de conexao ["+str(nStatus,4)+"]")

...


  Endif
   
  // Array com a antiga estrutura

...


  aStru := {}

...


  aadd(aStru,{"CPO01","N",8,0})

...


  aadd(aStru,{"CPO02","N",10,0})

...


  aadd(aStru,{"CPO03","D",8,0})

...


   
  // Cria a tabela para o teste

...


  DbCreate(cTableName,aStru,"TOPCONN")

...


  // Array com a nova estrutura
  

...

aNewStru := {}

...


  aadd(aNewStru,{"CPO01","C",8,0})

...


  aadd(aNewStru,{"CPO02","N",10,0})

...


  aadd(aNewStru,{"CPO03","D",8,0})

...


  
  bRet := TCAlter(cTableNAme,aStru,aNewStru, @ 

...

nTopErr)

...


  If !bRet

...


   

...

MsgInfo(tcsqlerror(),"Erro no TCAlter!")

...


  Endif
RETURN

Veja também