skolroots 0 Denunciar post Postado Dezembro 7, 2006 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
Motta 645 Denunciar post Postado Dezembro 7, 2006 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
alphamek 2 Denunciar post Postado Dezembro 8, 2006 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