Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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.
Abraços, B)
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