Composition Setup |
---|
import.css=/download/attachments/327912/newLayout.css |
...
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 |
---|
|
TCSQLExec( < cStatement> ) --> nStatus cStatement > )
|
Parâmetros
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
cStatement |
...
...
...
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 |
---|
nopanel | true |
---|
|
, não atualiza os campos de controle criados pelo Inclusão de trecho |
---|
| DBAccess |
---|
| DBAccess |
---|
nopanel | true |
---|
|
.
Exemplos
Bloco de código |
---|
language | cpp |
---|
theme | Eclipse |
---|
linenumbers | true |
---|
collapse | false |
---|
|
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())
EndIfendif
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