Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

skolroots

PL / SQl no Oracle

Recommended Posts

Ae galera....depois de apanhar bastante resolvi pedir aajuda de alguém ae...se alguém trabalha com PL / SQL dá uma mão ae...Seguinte...eu tenho uma sql de consulta que busca numa tabela respostas...nesta tabela tenho 3 colunas...res_dat, res_txt e res_intcaso a resposta seja data...o res_dat fica com a data e os outros dois ficam vazios...caso a resposta seja texto ...o res_txt fica com a resposta e os outros dois ficam vazios...e caso a resposta seja número ...o res_int fica com a resposta e os outros dois ficam vazios...fiz esse PL aqui...DECLAREres_txt CHAR;res_dat DATE;res_int NUMBER;BEGINSELECT res.res_Codigo, res_metadado1, res_metadado2 ,rd.PER_CODIGO, res_txt, res_dat, res_int FROM resposta res, resposta_dados rd where res.res_codigo=rd.res_codigo AND res_data_conclusao IS NOT NULL AND per_codigo = 263 AND UPPER(res_metadado2) LIKE UPPER('%%') ORDER BY res_metadado2; IF res_txt is not null THEN SELECT res.res_Codigo, res_metadado1, res_metadado2 ,rd.PER_CODIGO, res_txt FROM resposta res, resposta_dados rd where res.res_codigo=rd.res_codigo AND res_data_conclusao IS NOT NULL AND per_codigo = 263 AND UPPER(res_metadado2) LIKE UPPER('%%') ORDER BY res_metadado2; ELSE IF res_dat is not null THEN SELECT res.res_Codigo, res_metadado1, res_metadado2 ,rd.PER_CODIGO, res_dat FROM resposta res, resposta_dados rd where res.res_codigo=rd.res_codigo AND res_data_conclusao IS NOT NULL AND per_codigo = 263 AND UPPER(res_metadado2) LIKE UPPER('%%') ORDER BY res_metadado2; ELSE SELECT res.res_Codigo, res_metadado1, res_metadado2 ,rd.PER_CODIGO, res_int FROM resposta res, resposta_dados rd where res.res_codigo=rd.res_codigo AND res_data_conclusao IS NOT NULL AND per_codigo = 263 AND UPPER(res_metadado2) LIKE UPPER('%%') ORDER BY res_metadado2; END IF; END IF;END;.run;e dá esse erro aqui...ORA-06550: line 16, column 1:PLS-00103: Encountered the symbol "."algueem sabe pq?vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua lógica está correta mas pelo que vejo você tem dúvidas e deficiência na estrutura do PLSQL , mas que fica difícil tirar num forum como este,sugiro que leia algum manual ou livro.Outra coisa básica é ler procedures que usem queries e cursores.Se quiser posso te mandar um capitulo de um manual que tenho em pdf (English) ,mas pelo Google você acha algo em portugues tb.

 

na sua sp tem alguns erros :

1) um select deve retorno uma linha apenas e retornar valores para uma ou mais variaveis,para mais de uma linha é preciso declarar um cursor

2) esta declaração

.

run;

não existe.

 

mas a lócica seria mais ou menos esta um if definindo qual cursor você quer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Motta disse, trabalhar com cursor resolveria sua vida, então abaixo segue um material básico em português para ter uma noção de como trabalhar.

 

SQL Magazine - Cursores

 

Abraços, B)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.