Alguém me pode explicar o conceito "flexibilidade" em SQL?
Penso que será utilizando por exemplo variaveis strings para criar as instruções SQL.
Sintaxe 1
EXECUTE IMMEDIATE SQLStatement (USING TransactionObject);
SQLStatement que é para executar instruções SQL, usando aspas podem ser causados pela implementação do SQL para usar, ou a forma de uma declaração de variável string SQL. Usando uma variável de cadeia pode ser executado somente quando uma específica especificar que tipo de instrução SQL. TransactionObject é uma transação objeto usado por padrão para o SQLCA.
2 Aplicações
① estabelecer uma tabela de banco de dados (base), as declarações SQL entre aspas para ser usada diretamente.
EXECUTE base IMMEDIATE'CREATE TABLE (código char (6), nome char (30)) 'usando SQLCA;
② a execução da operação nos registros do banco de dados, na tabela de base para inserir um registro, a declaração de SQL executa a declaração feita por uma variável string.
STRING lsSQL
LsSQL = "INSERT INTO TABELA VALUES base ('320201 ',' Poder Central City ')"
EXECUTE IMMEDIATE: lsSQL;
Existe mais informações na NET sobre o assunto.
Cumprimetos..
Sintaxe 1
EXECUTE IMMEDIATE SQLStatement (USING TransactionObject);
SQLStatement que é para executar instruções SQL, usando aspas podem ser causados pela implementação do SQL para usar, ou a forma de uma declaração de variável string SQL. Usando uma variável de cadeia pode ser executado somente quando uma específica especificar que tipo de instrução SQL. TransactionObject é uma transação objeto usado por padrão para o SQLCA.
2 Aplicações
① estabelecer uma tabela de banco de dados (base), as declarações SQL entre aspas para ser usada diretamente.
EXECUTE base IMMEDIATE'CREATE TABLE (código char (6), nome char (30)) 'usando SQLCA;
② a execução da operação nos registros do banco de dados, na tabela de base para inserir um registro, a declaração de SQL executa a declaração feita por uma variável string.
STRING lsSQL
LsSQL = "INSERT INTO TABELA VALUES base ('320201 ',' Poder Central City ')"
EXECUTE IMMEDIATE: lsSQL;
Existe mais informações na NET sobre o assunto.
Cumprimetos..
Outros exemplos de flexibilidade para os colegas que não ficaram esclarecidos
Utilizando querys:
Utilizando a sintax VisualDBase com SQL (Para outras linguagens terá de haver adaptação da sintaxe) de uma FORMA BASICA e SIMPLES,
abrindo 2 tabelas para por exemplo verficar se existe o registo da entidade como cliente e fornecedor através do NIF
supondo que nas 2 tabelas o campo ncontribuinte encontra-se indexado.
* Abrir tabela de Clientes
a=new query()
a.sql="select * from clintes"
a.active=true //abrir a query
a.rowset.indexname="ncontribuinte"
a.rowset.first() // força para o inico da tabela
* Abrir tabela de Fornecedores
b=new query()
b.sql="select * from fornecedores"
b.active=true
b.rowset.indexname="ncontribuinte" //verificando a existência
b.rowset.first()
// atendendo que a variavel de entrada para a pesquisa do NIF é Wncontribuinte
.... GET Wncontribinte //obtendo o valor do NIF a consultar
PRIVATE INT controlderegisto
controloderegisto=0
if a.rowset.findkey(Wncontribuinte) // pesquisa se existe registo com esse nº de contribuinte em CLientes
controloderegisto=1
EscreverMensagem="A entidade já se encontra registada como Cliente"
endif
if b.rowset.findkey(Wncontribuinte) // pesquisa se existe registo com esse nº de contribuinte em Fornecedores
controloderegisto=1
EscreverMensagem="A entidade já se encontra registada como Fornecedor"
endif
if controloderegisto=0
EscreverMensagem="A entidade não se encontra registada como Cliente nem como Fornecedor"
endif
a.active=false // fechar a query()
b.active=false // fechar a query()
***************************
Existe forma de juntar 2 tabelas ou mais na mesma query utilizando campos primarios
Exemplo de um orçamento: COnsultar a ficha mais as linhas correspondentes, sendo a variavel de entrada do nº de orçamento a consultar "whnumero"
E=new query()
E.sql="select * from orcamentoficha,orcamentolinhas ;
where orcamentoficha.numero=orcamentolinhas.numero and orcamentoficha.numero="+whnumero+""
//o Campo "numero" será o campo chave que irá ligar as 2 tabelas associado a variavel whnumero
E.active=true
Utilizando querys:
Utilizando a sintax VisualDBase com SQL (Para outras linguagens terá de haver adaptação da sintaxe) de uma FORMA BASICA e SIMPLES,
abrindo 2 tabelas para por exemplo verficar se existe o registo da entidade como cliente e fornecedor através do NIF
supondo que nas 2 tabelas o campo ncontribuinte encontra-se indexado.
* Abrir tabela de Clientes
a=new query()
a.sql="select * from clintes"
a.active=true //abrir a query
a.rowset.indexname="ncontribuinte"
a.rowset.first() // força para o inico da tabela
* Abrir tabela de Fornecedores
b=new query()
b.sql="select * from fornecedores"
b.active=true
b.rowset.indexname="ncontribuinte" //verificando a existência
b.rowset.first()
// atendendo que a variavel de entrada para a pesquisa do NIF é Wncontribuinte
.... GET Wncontribinte //obtendo o valor do NIF a consultar
PRIVATE INT controlderegisto
controloderegisto=0
if a.rowset.findkey(Wncontribuinte) // pesquisa se existe registo com esse nº de contribuinte em CLientes
controloderegisto=1
EscreverMensagem="A entidade já se encontra registada como Cliente"
endif
if b.rowset.findkey(Wncontribuinte) // pesquisa se existe registo com esse nº de contribuinte em Fornecedores
controloderegisto=1
EscreverMensagem="A entidade já se encontra registada como Fornecedor"
endif
if controloderegisto=0
EscreverMensagem="A entidade não se encontra registada como Cliente nem como Fornecedor"
endif
a.active=false // fechar a query()
b.active=false // fechar a query()
***************************
Existe forma de juntar 2 tabelas ou mais na mesma query utilizando campos primarios
Exemplo de um orçamento: COnsultar a ficha mais as linhas correspondentes, sendo a variavel de entrada do nº de orçamento a consultar "whnumero"
E=new query()
E.sql="select * from orcamentoficha,orcamentolinhas ;
where orcamentoficha.numero=orcamentolinhas.numero and orcamentoficha.numero="+whnumero+""
//o Campo "numero" será o campo chave que irá ligar as 2 tabelas associado a variavel whnumero
E.active=true