select com um vetor

Oracle

SELECT

Oracle PL SQL

08/04/2019

pessoal boa noite !
sou iniciante em banco de dados e estou tentando preencher um vetor com valores de uma tabela via select, no oracle, porem não estou tento sucesso
tenho esse conjunto de select , que vão do idiso 1 até 12, eu gostaria de declarar FIELD_LINHA1XI como um vetor e salvar os as 12 linhas atraves de um for

SELECT XI INTO FIELD_LINHA1XI FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT YI INTO FIELD_LINHA1YI FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT XF INTO FIELD_LINHA1XF FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT YF INTO FIELD_LINHA1YF FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT X5 INTO FIELD_LINHA1X5 FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT X4 INTO FIELD_LINHA1X4 FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT X3 INTO FIELD_LINHA1X3 FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT X2 INTO FIELD_LINHA1X2 FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT X1 INTO FIELD_LINHA1X1 FROM AD_ISOPLETA I WHERE I.IDISO = 1;
SELECT X0 INTO FIELD_LINHA1X0 FROM AD_ISOPLETA I WHERE I.IDISO = 1;

algo deste tipo

for i in 1..12 loop
SELECT XI INTO FIELD_LINHAXI(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT YI INTO FIELD_LINHAYI(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT XF INTO FIELD_LINHAXF(i) FROM AD_ISOPLETA I WHERE I.IDISO = i
SELECT YF INTO FIELD_LINHAYF(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT X5 INTO FIELD_LINHAX5(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT X4 INTO FIELD_LINHAX4(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT X3 INTO FIELD_LINHAX3(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT X2 INTO FIELD_LINHAX2(i) FROM AD_ISOPLETA I WHERE I.IDISO =i;
SELECT X1 INTO FIELD_LINHAX1(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;
SELECT X0 INTO FIELD_LINHAX0(i) FROM AD_ISOPLETA I WHERE I.IDISO = i;

end loop;

meu valor é um float

a declaração do vetor seria como?
Luiz Zacchi

Luiz Zacchi

Curtidas 0

Melhor post

Artur Barth

Artur Barth

09/04/2019

Não sei se entendi direito seu problema.
Tenta utilizar dessa forma.

SELECT WM_CONCAT(X0) || WM_CONCAT(X1(IDISO)) ....... 
   FROM AD_ISOPLETA
 WHERE AGLOG.IDISO BETWEEN 1 AND 12 
 ORDER BY IDISO


A função "VM_CONCAT" concatena todos os resultados de um field em uma lista separada por virgula (algumas linguagens entendem listas separadas por virgula como vetores).

Espero ter ajudado.
Att.
Artur Barth
GOSTEI 2

Mais Respostas

Luiz Zacchi

Luiz Zacchi

08/04/2019

Não sei se entendi direito seu problema.
Tenta utilizar dessa forma.

SELECT WM_CONCAT(X0) || WM_CONCAT(X1(IDISO)) ....... 
   FROM AD_ISOPLETA
 WHERE AGLOG.IDISO BETWEEN 1 AND 12 
 ORDER BY IDISO


A função "VM_CONCAT" concatena todos os resultados de um field em uma lista separada por virgula (algumas linguagens entendem listas separadas por virgula como vetores).

Espero ter ajudado.
Att.
Artur Barth


obrigado vou tentar e ver o resultado !!!
GOSTEI 0
Alex William

Alex William

08/04/2019

Boa tarde, amigo.

Todo SQL que voce fizer um SELECT , se for a mesma linha ele retorna um vetor do resultado.

Ou seja, executar:
SELECT XI, YI, XF, YF, X5, X4, X3, X2, X1, X0 FROM AD_ISOPLETA I WHERE I.IDISO = 1;


Se voce executar isso em uma variavel, por exemplo efetuando um fetch_assoc, por exemplo ele transformaria a variavel em um vetor onde cada campo seria o identificador do campo:

$var['XI'] = valorXI;
$var['YI'] = valorYI;

Assim por diante.

Vai trazer um vetor, depois voce só precisa dar um fetch nele com a linguagem de programação que voce esta usando e chamar por posicao ou nome do campo.

Espero ter ajudado. :D
GOSTEI 0
POSTAR