Flexibiliade SQL

Flexibiliade SQL

por Luís Duarte Andrade Ferreira -
Número de respostas: 2
Alguém me pode explicar o conceito "flexibilidade" em SQL?
Em resposta a 'Luís Duarte Andrade Ferreira'

Re: Flexibiliade SQL

por Herberto Silva -
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..
Em resposta a 'Luís Duarte Andrade Ferreira'

Re: Flexibiliade SQL

por Herberto Silva -
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