Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Função: TCSQLExec

Executa uma sentença de sintaxe SQL (Structured Query Language).

TCSQLExec ( < cStatement> ) --> nStatus

NomeTipoDescriçãoObrigatórioReferência
cStatementCaracterIndica a string que contém a sentença que será informada à função e executada no banco de dados. X
    nStatus(numerico)
  • Retorna o status da execução. Se menor que 0 indica que a sentença não foi executada com sucesso.
  • A sentença <cStatement> é extremamente dependente do SGBD (Sistema Gerenciador de Banco de Dados) e deve ser construída visando o banco de dados utilizado.
  • Um retorno <nStatus> menor que 0 indica que o statement não foi executado com sucesso.
  • É 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 (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  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

  • Sem rótulos