Á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/327912/newLayout.css

...

Pagetitle
TCSQLExec
TCSQLExec

Função: TCSQLExec

Executa

...

uma

...

instrução de

...

sintaxe

...

SQL

...

(Structured

...

Query

...

Language) diretamente no banco de dados em que está conectado.

Sintaxe

Bloco de código
collapsefalse
TCSQLExec( <
cStatement> ) --> nStatus
 cStatement > )

Parâmetros

...

Nome

Tipo

Descrição

Obrigatório

Referência

cStatement

...

caractere

Indica a

...

instrução que será

...

executada no banco de dados.

X


Retorno

...

Nome

Tipo

Descrição

nStatus

numérico

Retorna o status da execução. Se menor que 0 indica que a

...

instrução não foi executada com sucesso.

Observações

...

  • O parâmetro cStatement é extremamente dependente do SGBD (

...

  • Sistema Gerenciador de Banco de Dados) e deve ser construída visando o banco de dados utilizado.

...

  • É aconselhável que o parâmetro

...

  • cStatement execute uma única instrução por vez

...

  • . Isto porque a solicitação de execução de mais de uma instrução no Statement está sujeito ao comportamento do SGBD.
  • Essa função, por submeter instruções SQL diretamente ao SGBD, podendo utilizar tabelas não criadas pelo
    Inclusão de trecho
    DBAccess
    DBAccess
    nopaneltrue
    , não atualiza os campos de controle criados pelo
    Inclusão de trecho
    DBAccess
    DBAccess
    nopaneltrue
    .

Exemplos

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
USER FUNCTION TEST()
  TCLink()
  
  TCDelFile("T1")
  
  DBCreate("T1", {{"FIELD_NAME", "C", 10, 0}, ;
                  {"FIELD_TYPE", "C", 10, 0}}, "TOPCONN")
  
  nStatus := TCSqlExec("insert into t1 (field_name, field_type) values ('name', 'type')")
  
  if (nStatus < 0)
    conout
(Sistema Gerenciador de Banco de Dados), como por exemplo:
  • No MSSQL Server cada instrução deve ser separada pelo caracter ';' (ponto e vírgula). Se for executada uma única instrução o caracter ';' (ponto e vírgula) é opcional.
  • No DB2 (IBM) sempre é executada uma única instrução e sempre a primeira. Se for colocada mais de uma instrução separada pelo caracter ';' (ponto e vírgula) somente a primeira instrução será executada e não é reportado nenhuma mensagem sobre as demais instruções que não foram executadas.
  • No Oracle o Statement não pode ser encerrado com o caracter ';' (ponto e vírgula), isto é interpretado pelo SGBD como caracter inválido. Caso seja necessário executar mais de uma instrução no mesmo Statement, é obrigatório a utilização da estrutura 'BEGIN ... END;' ('BEGIN <INSTRUÇÃO 1>;<INSTRUÇÃO 2>;<...>;<INSTRUÇÃO N>; END;') com as instruções separadas pelo caracter ';' (ponto e vírgula).
#DEFINE CRLF Chr(13)+Chr(10)User Function Exemplo()Local cEstrutura := "", cStatement := "" If !(TCIsConnected()) Return MsgAlert("Você precisa abrir uma conexão com o banco de dados") EndIf If !("MSSQL"$TCGetDB()) Return MsgStop(TCGetDB() + " - Nao tratado!") Endif cEstrutura := "MyTempTable" cStatement := "if exists(select name from sysobjects where name like '" + cEstrutura + "%' and xtype = 'U')" + CRLF cStatement += "begin" + CRLF cStatement += " drop table " + cEstrutura + "" + CRLF cStatement += "end" + CRLF If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIf cStatement := "create table " + cEstrutura + " (" + CRLF cStatement += " campo_caractere varchar(20) not null default ' ', " + CRLF cStatement += " campo_numerico float default 0, " + CRLF cStatement += " campo_logico varchar(1) not null default 'F', " + CRLF cStatement += " campo_data varchar(8) not null default ' ' " + CRLF cStatement += ")" If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIf cStatement := "insert into " + cEstrutura + " values ('1st ', 1, 'T', '20080101')" If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIf cStatement := "insert into " + cEstrutura + " values ('3nd ', 2, 'F', '20080103')" If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIf cStatement := "insert into " + cEstrutura + " values ('3rd ', 3, 'T', '20080103')" If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIf cStatement := "insert into " + cEstrutura + " values ('4th ', 4, 'F', '20080104')" If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIf cStatement := "update " + cEstrutura + " " + CRLF cStatement += " set campo_caractere = '2nd ', campo_data = '20080102'" + CRLF cStatement += "where campo_caractere = '3nd ' and campo_data = '20080103'" If (TCSQLExec(cStatement) < 0) Return MsgStop
("TCSQLError() " + TCSQLError())
  
EndIf
endif
  
cStatement

 
:= "delete " + cEstrutura + " where campo_caractere = '4th '" If (TCSQLExec(cStatement) < 0) Return MsgStop("TCSQLError() " + TCSQLError()) EndIfReturn Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
 TCUnlink()
RETURN

Veja também