Page tree
Skip to end of metadata
Go to start of metadata

Insere ou atualiza um parâmetro na TOP_PARAM.

Sintaxe

TCSetParam( < cParam >, < cValue > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cParam

caractere

Indica o nome do parâmetro que será criado ou atualizado.

X


cValue

caractere

Indica o valor do parâmetro indicado em cParam.

X


Retorno

Nome

Tipo

Descrição

nRet

numérico

Retorna 0 (zero) se a operação foi completada com sucesso ou diferente em caso de erro.

Observações

  • TCSetParam utiliza a o identificador de conexão entre o DBAccess e o SGBD (igual ao valor retornado pela função TCGetDBSID) para diferenciar os parâmetros inseridos por cada conexão.
  • Caso exista mais de uma conexão no mesmo programa para o mesmo ambiente de DBAccess e cada conexão insira o mesmo parâmetro com o mesmo valor, cada conexão terá uma entrada na tabela TOP_PARAM.
  • A função utiliza necessariamente a RDD TOPCONN. Caso não haja conexão com o DBAccess, será exibida uma mensagem de advertência no log de console do AppServer "Warning - TCSetParam - statement ignored - No connection." e a função irá retornar -2.
  • Caso cValue esteja vazio, a função irá retornar erro e será exibido no log de console do DBAccess a mensagem "SetParam [PPP] does not accept NULL parameter value.", onde PPP é o nome passado em cParam.
  • Em builds do AppServer superiores a 7.00.131227A, se cParam estiver vazio, a função irá retornar erro.
  • Se o ambiente do DBAccess que será acessado não suportar conexãoes ISAM (chave IsamConnection no arquivo ini do DBAccess), a função retornará erro e será exibido no log de console do DBAccess a mensagem "SetParam only supported when IsamConnection is ENABLED.".
  • Se o ambiente do DBAccess que será acessado está como somente leitura (chave ReadOnly no arquivo ini do DBAccess), a função retornará erro e será exibido no log de console do DBAccess a mensagem "SetParam not supported on READONLY Connection.".
  • Em caso de erro, consulte a função TCSQLError para saber o motivo.
  • A função funciona para os SGBDs: MS SQL Server, Oracle, Informix, DB2, OpenEdge. Para os demais, a função retornará 0, mas não efetuará operação alguma.
  • O SGBD PostgreSQL é suportado a partir da build 20161016 com data de geração superior a 03/01/2017.

Exemplos

O teste abaixo considera que a tabela TOP_PARAM está vazia.

user function test1()
  Local nHandle1 := TCLink( "MSSQL/DSN1", "127.0.0.1", 7890 )
  Local cAlias := "alias"
  Local cQuery := ""
  
  // Cria o parâmetro "PARAM1" com o valor "VALUE1"
  conout( TCSetParam( "PARAM1", "VALUE1" ) ) // Vai exibir: 0
  
  // Atualiza o parâmetro "PARAM1" com o valor "VALUE2"
  conout( TCSetParam( "Param1", "VALUE2" ) ) // Vai exibir: 0
  
  // Verifica quantos registros existem do parâmetro "PARAM1"
  cQuery := "SELECT COUNT( PARAM_VALUE ) AS CNT FROM TOP_PARAM WHERE PARAM_NAME='PARAM1'"
  
  DBUseArea( .T., cRDD, TCGenQry( , , cQuery ), (cAlias), .F., .T. )
  conout( (cAlias)->CNT ) // Vai exibir: 1
  DBCloseArea()
  
  // Pega o valor do parâmetro "PARAM1"
  cQuery := "SELECT PARAM_VALUE FROM TOP_PARAM WHERE PARAM_NAME='PARAM1'"
  
  DBUseArea( .T., cRDD, TCGenQry( , , cQuery ), (cAlias), .F., .T. )
  conout( (cAlias)->PARAM_VALUE ) // Vai exibir: Value2
  DBCloseArea()
  
  TCUnlink( nHandle1 )
return

Veja também

  • No labels