RE: [oracle_br] Re: Declarar variaveis + select
Eu andei vendo umas proc que tem por aqui e é diferente mesmo de SS e bem como você disse em relação a transação e tudo o mais, bem diferente mesmo. É isto mesmo o que eu estava fazendo: SELECT coluna1, coluna2, ..., colunaN FROM tabela Só que no modo: SELECT coluna1, coluna2, ..., colunaN INTO variavel1, variavel2 FROM tabela ... Ainda não deu certo. Enfim ... Vou pegar uns livros/apostilas com alguem por aqui ou amigos. Engraçado, depois de tantos anos de banco de dados a sensação é que eu não sei nada. Obrigado pela ajuda e dica! []'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On Behalf Of jlchiappa Sent: quinta-feira, 5 de fevereiro de 2009 16:29 To: oracle_br@yahoogrupos.com.br Subject: [oracle_br] Re: Declarar variaveis + select Sim, há muuuita diferença entre Oracle x SS, não só na programação mas no modo de usar, nos conceitos (por exemplo, que locks bloqueiam reads, no Oracle isso não é assim, não há begin trans, etc, etc) - há MESMO muitas diferenças CAPITAIS entre esses dois, a minha recomendação é mesmo vc por de lado um pouco o que vc sabe do SS e começar o estudo do Oracle pelos manuais de Concepts, de SQL reference e pelo de programação PL/SQL, que são os básicos de tudo... No caso em questão me parece que vc está fazendo SELECT coluna1, coluna2, ..., colunaN FROM tabela, essa sintaxe é aceita no dialeto SQLdo banco Oracle ** MAS NÃO *** na linguagem procedural dele, o PL/SQL, em PL/SQL o trecho tem que ser : SELECT coluna1, coluna2, ..., colunaN INTO variavel1, variavel2 FROM tabela . Ou vc pode usar uma variável ROWTYPE, que já acomoda as colunas todas. Esses conceitos são totalmente explicados no manual de PL/SQL, o recomendo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br, Flaviano, Wellington (GE Money) wellington.flavi...@... escreveu Não é possível ... Tá dando erro ... Hehehe ... Não sabia que era tanta diferença assim ... Olha o código... DECLARE V_PROPOSTA VARCHAR(12) := '109000617236'; V_PRODUTO NUMBER := 3; V_CLIENTID NUMBER := 5; V_DATA DATE:= SYSDATE; V_CAMPANHA NUMBER := 61; V_TABELA_FINANCEIRA VARCHAR(5) := 'FAW'; BEGIN SELECT DISTINCT ..(tem várias colunas) FROM TRN_APPL_REQUESTS TAR, RESULTBLKADD RB, RESULTBLOCK R, APPLICANT A, INTERNAL I, EXTERNAL E, PRODUCT P WHERE TAR.SEQ_REQUEST = RB.SEQ_REQUEST ANDTAR.SEQ_REQUEST = R.SEQ_REQUEST ANDTAR.SEQ_REQUEST = A.SEQ_REQUEST -- aqui está o erro: ORA-06550 / PL/SQL:ORA-00933 ANDTAR.SEQ_REQUEST = I.SEQ_REQUEST ANDTAR.SEQ_REQUEST = E.SEQ_REQUEST ANDTAR.SEQ_REQUEST = P.SEQ_REQUEST ANDTAR.ID_APPLICATION = V_PROPOSTA ANDA.ACDICO_PRODUCT= V_PRODUTO ANDA.ACDICO_CLIENTID = V_CLIENTID ANDTRUNC(TAR.DT_INSERT)= TRUNC(V_DATA) ANDI.IPSMNM_SPARE3 = V_CAMPANHA ANDP.PSPDCR_SPARE1 = V_TABELA_FINANCEIRA ORDER BY TAR.ID_APPLICATION, TRUNC(TAR.DT_INSERT), CAST(R.NO_SEMCALL AS VARCHAR(2)) END Agora ... Que merda estou fazendo de errado ??? Obs.: Quando eu rodo o select ... Sem as declarações funciona normal. []'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On Behalf Of Júlio César Corrêa Sent: quinta-feira, 5 de fevereiro de 2009 12:12 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Declarar variaveis + select Eu também rs.Fiz correndo e passei errado para vc..Sorry :(O mais importante é achar onde está errado e consertar!!! Boa sorte para vc no Oracle!!Precisando estamos ae!Eu tbm sou novo na área em relação a outros colegas do grupo,mais estamos aprendendo todo dia. ; neles! 2009/2/5 Flaviano, Wellington (GE Money) wellington.flavi...@... Mals, esqueci do ; ... Funcionou ... Obrigado. []'s -Original Message- From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of Flaviano, Wellington (GE Money) Sent: quinta-feira, 5 de fevereiro de 2009 11:32 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: RE: [oracle_br] Declarar variaveis + select Importance: High Julio. Obrigado desde já ... MAS ... Qdo faço a declaração, dá erro (ORA-06550). O erro é no V_NO_SEMCALL, logo no V_ e depois para as variaveis abaixo também. DECLARE V_PROPOSTA VARCHAR(20) := '109000617236' V_NO_SEMCALL NUMBER := 3 V_PRODUTO NUMBER := 3 V_CLIENT_ID NUMBER := 5 []'s -Original Message- From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of Júlio César Corrêa Sent: quinta-feira, 5 de
Re: [oracle_br] Re: Declarar variaveis + select
Só para complementar segue os links. Observe bem os samples,howto's que vc vai se dar bem. Só uma observação é que os concepts são em inglês,mas digo que não e´ difícil de entender,é inglês técnico mesmo. Se você dar atenção aos exemplos,você consegue acertar/corrigir os seus códigos,agora para entender um conceito legal tem que ler mesmo,mas repito que não é bicho de sete cabeças.Não sei como está o seu inglês. Aqui vai um link em portuguese caso precise: http://www.fundao.wiki.br/articles.asp?cod=154 Há dezenas em inglês http://www.oracle.com/pls/db102/portal.portal_db?selected=5 Este acima tem todos os guides da oracle.É destes que o Chiappa mencionou. http://dbis.ucdavis.edu/courses/sqltutorial/tutorial.pdf Antes de tudo de uma googleada,tem varios blogs por ae de gente fina,tem os foruns com respostas dadas anteriormente,tem pdf's,site da Oracle com samples.tutoriais aff,tem muita coisa. Abs, 2009/2/5 jlchiappa jlchia...@yahoo.com.br Sim, há muuuita diferença entre Oracle x SS, não só na programação mas no modo de usar, nos conceitos (por exemplo, que locks bloqueiam reads, no Oracle isso não é assim, não há begin trans, etc, etc) - há MESMO muitas diferenças CAPITAIS entre esses dois, a minha recomendação é mesmo vc por de lado um pouco o que vc sabe do SS e começar o estudo do Oracle pelos manuais de Concepts, de SQL reference e pelo de programação PL/SQL, que são os básicos de tudo... No caso em questão me parece que vc está fazendo SELECT coluna1, coluna2, ..., colunaN FROM tabela, essa sintaxe é aceita no dialeto SQLdo banco Oracle ** MAS NÃO *** na linguagem procedural dele, o PL/SQL, em PL/SQL o trecho tem que ser : SELECT coluna1, coluna2, ..., colunaN INTO variavel1, variavel2 FROM tabela . Ou vc pode usar uma variável ROWTYPE, que já acomoda as colunas todas. Esses conceitos são totalmente explicados no manual de PL/SQL, o recomendo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Flaviano, Wellington (GE Money) wellington.flavi...@... escreveu Não é possível ... Tá dando erro ... Hehehe ... Não sabia que era tanta diferença assim ... Olha o código... DECLARE V_PROPOSTA VARCHAR(12) := '109000617236'; V_PRODUTO NUMBER := 3; V_CLIENTID NUMBER := 5; V_DATA DATE := SYSDATE; V_CAMPANHA NUMBER := 61; V_TABELA_FINANCEIRA VARCHAR(5) := 'FAW'; BEGIN SELECT DISTINCT ..(tem várias colunas) FROM TRN_APPL_REQUESTS TAR, RESULTBLKADD RB, RESULTBLOCK R, APPLICANT A, INTERNAL I, EXTERNAL E, PRODUCT P WHERE TAR.SEQ_REQUEST = RB.SEQ_REQUEST AND TAR.SEQ_REQUEST = R.SEQ_REQUEST AND TAR.SEQ_REQUEST = A.SEQ_REQUEST -- aqui está o erro: ORA-06550 / PL/SQL:ORA-00933 AND TAR.SEQ_REQUEST = I.SEQ_REQUEST AND TAR.SEQ_REQUEST = E.SEQ_REQUEST AND TAR.SEQ_REQUEST = P.SEQ_REQUEST AND TAR.ID_APPLICATION = V_PROPOSTA AND A.ACDICO_PRODUCT = V_PRODUTO AND A.ACDICO_CLIENTID = V_CLIENTID AND TRUNC(TAR.DT_INSERT)= TRUNC(V_DATA) AND I.IPSMNM_SPARE3 = V_CAMPANHA AND P.PSPDCR_SPARE1 = V_TABELA_FINANCEIRA ORDER BY TAR.ID_APPLICATION, TRUNC(TAR.DT_INSERT), CAST(R.NO_SEMCALL AS VARCHAR(2)) END Agora ... Que merda estou fazendo de errado ??? Obs.: Quando eu rodo o select ... Sem as declarações funciona normal. []'s -Original Message- From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of Júlio César Corrêa Sent: quinta-feira, 5 de fevereiro de 2009 12:12 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Declarar variaveis + select Eu também rs.Fiz correndo e passei errado para vc..Sorry :(O mais importante é achar onde está errado e consertar!!! Boa sorte para vc no Oracle!!Precisando estamos ae!Eu tbm sou novo na área em relação a outros colegas do grupo,mais estamos aprendendo todo dia. ; neles! 2009/2/5 Flaviano, Wellington (GE Money) wellington.flavi...@... Mals, esqueci do ; ... Funcionou ... Obrigado. []'s -Original Message- From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br] On Behalf Of Flaviano, Wellington (GE Money) Sent: quinta-feira, 5 de fevereiro de 2009 11:32 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br Subject: RE: [oracle_br] Declarar variaveis + select Importance: High Julio. Obrigado desde já ... MAS ... Qdo faço a declaração, dá erro (ORA-06550). O erro é no V_NO_SEMCALL, logo no V_ e depois para as variaveis abaixo também. DECLARE V_PROPOSTA VARCHAR(20) := '109000617236' V_NO_SEMCALL NUMBER := 3 V_PRODUTO NUMBER := 3 V_CLIENT_ID NUMBER := 5 []'s -Original Message-
RE: [oracle_br] Re: Declarar variaveis + select
Quanto a isto, é o de menos, sou obrigado a todo o santo dia falar inglês ... Eu fiz uma pesquisa, bem rápida, mas não encontrei uma solução plausivel (também não pesquisei a fundo) e por isto mandei uma msg no grupo ... Mas com estas dicas já posso aprender bastante. Mas valeu ... Vou começar agora o aprendizado .. Hehee []'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] On Behalf Of Júlio César Corrêa Sent: quinta-feira, 5 de fevereiro de 2009 16:56 To: oracle_br@yahoogrupos.com.br Subject: Re: [oracle_br] Re: Declarar variaveis + select Só para complementar segue os links. Observe bem os samples,howto's que vc vai se dar bem. Só uma observação é que os concepts são em inglês,mas digo que não e´ difícil de entender,é inglês técnico mesmo. Se você dar atenção aos exemplos,você consegue acertar/corrigir os seus códigos,agora para entender um conceito legal tem que ler mesmo,mas repito que não é bicho de sete cabeças.Não sei como está o seu inglês. Aqui vai um link em portuguese caso precise: http://www.fundao.wiki.br/articles.asp?cod=154 Há dezenas em inglês http://www.oracle.com/pls/db102/portal.portal_db?selected=5 Este acima tem todos os guides da oracle.É destes que o Chiappa mencionou. http://dbis.ucdavis.edu/courses/sqltutorial/tutorial.pdf Antes de tudo de uma googleada,tem varios blogs por ae de gente fina,tem os foruns com respostas dadas anteriormente,tem pdf's,site da Oracle com samples.tutoriais aff,tem muita coisa. Abs, 2009/2/5 jlchiappa jlchia...@yahoo.com.br Sim, há muuuita diferença entre Oracle x SS, não só na programação mas no modo de usar, nos conceitos (por exemplo, que locks bloqueiam reads, no Oracle isso não é assim, não há begin trans, etc, etc) - há MESMO muitas diferenças CAPITAIS entre esses dois, a minha recomendação é mesmo vc por de lado um pouco o que vc sabe do SS e começar o estudo do Oracle pelos manuais de Concepts, de SQL reference e pelo de programação PL/SQL, que são os básicos de tudo... No caso em questão me parece que vc está fazendo SELECT coluna1, coluna2, ..., colunaN FROM tabela, essa sintaxe é aceita no dialeto SQLdo banco Oracle ** MAS NÃO *** na linguagem procedural dele, o PL/SQL, em PL/SQL o trecho tem que ser : SELECT coluna1, coluna2, ..., colunaN INTO variavel1, variavel2 FROM tabela . Ou vc pode usar uma variável ROWTYPE, que já acomoda as colunas todas. Esses conceitos são totalmente explicados no manual de PL/SQL, o recomendo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Flaviano, Wellington (GE Money) wellington.flavi...@... escreveu Não é possível ... Tá dando erro ... Hehehe ... Não sabia que era tanta diferença assim ... Olha o código... DECLARE V_PROPOSTA VARCHAR(12) := '109000617236'; V_PRODUTO NUMBER := 3; V_CLIENTID NUMBER := 5; V_DATA DATE := SYSDATE; V_CAMPANHA NUMBER := 61; V_TABELA_FINANCEIRA VARCHAR(5) := 'FAW'; BEGIN SELECT DISTINCT ..(tem várias colunas) FROM TRN_APPL_REQUESTS TAR, RESULTBLKADD RB, RESULTBLOCK R, APPLICANT A, INTERNAL I, EXTERNAL E, PRODUCT P WHERE TAR.SEQ_REQUEST = RB.SEQ_REQUEST AND TAR.SEQ_REQUEST = R.SEQ_REQUEST AND TAR.SEQ_REQUEST = A.SEQ_REQUEST -- aqui está o erro: ORA-06550 / PL/SQL:ORA-00933 AND TAR.SEQ_REQUEST = I.SEQ_REQUEST AND TAR.SEQ_REQUEST = E.SEQ_REQUEST AND TAR.SEQ_REQUEST = P.SEQ_REQUEST AND TAR.ID_APPLICATION = V_PROPOSTA AND A.ACDICO_PRODUCT = V_PRODUTO AND A.ACDICO_CLIENTID = V_CLIENTID AND TRUNC(TAR.DT_INSERT)= TRUNC(V_DATA) AND I.IPSMNM_SPARE3 = V_CAMPANHA AND P.PSPDCR_SPARE1 = V_TABELA_FINANCEIRA ORDER BY TAR.ID_APPLICATION, TRUNC(TAR.DT_INSERT), CAST(R.NO_SEMCALL AS VARCHAR(2)) END Agora ... Que merda estou fazendo de errado ??? Obs.: Quando eu rodo o select ... Sem as declarações funciona normal. []'s -Original Message- From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br] On Behalf Of Júlio César Corrêa Sent: quinta-feira, 5 de fevereiro de 2009 12:12 To: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br Subject: Re: [oracle_br] Declarar variaveis + select Eu também rs.Fiz correndo e passei errado para vc..Sorry :(O mais importante é achar onde está errado e consertar!!! Boa sorte para vc no Oracle!!Precisando estamos ae!Eu tbm sou novo na área em relação a outros colegas do grupo,mais estamos aprendendo todo dia. ; neles! 2009/2/5 Flaviano, Wellington (GE Money) wellington.flavi...@... Mals, esqueci do ; ... Funcionou ... Obrigado. []'s -Original Message- From: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br oracle_br%40yahoogrupos.com.br[mailto: oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.broracle_br% 40yahoogrupos.com.br] On Behalf
Re: [oracle_br] Re: Declarar variaveis + select
Os numeros de variaveis na clausula into deve ser igual ao numero de campos do seu select,lembrando que se o seu select retornar mais de uma linha,não vai funcionar tbm.Para mais linhas,vc tera que usar for loop,registros e afins (array,type se necessário),portanto : Porque as vezes você resolve um problema com codigo simples,com sql puro ou com um bloco pl/sql. Use 5W2H(perguntinhas basicas para resolver situações) e vai atrás dos oracle books ,que sao free mesmo. No caso do seu codigo pl/sql: -Defina o que você quer fazer. -O que você quer retornar? O que você realmente precisa?Retornar um relatorio simples?Popular outras tabelas?Limpar tabelas? Se for somente buscar dados,você usara normalente sql puro.é processamento,rotinas?PL/SQL. Quantas vezes vai ser executado?local?remoto? Tipo: E eu preciso declarar uma variavel. R:procure como declarar variaveis. Mais eu preciso colocar dados do select dentro de variaveis R: procure como colocar dados dentro de variaveis Como eu uso tipo date?como eu declaro variaveis com esse tipo? Então faça as perguntas do que você não conhece para vc mesmo e tente achar em books,google rapidamente vc consegue ir aprendendo as diferenças. E como o Chiappa disse,deixa o SS de lado um poko,e tenta se puder entender como funciona o SQL e PL/SQL no Oracle. E vai montando o seu codigo aos poucos! Vai na manha do gato que você consgue cara. Eu confesso que até hj faço isso,o aprendizado deve ser continuo e há casos que não existe um jeito só de fazer um coisa,as vezes existe varios ou as vezes não existe.Mais para a maioria das soluções vc vai achar resposta ae Fui..voltar ao trabalho aki! 2009/2/5 Júlio César Corrêa juliotubi...@yahoo.com.br Só para complementar segue os links. Observe bem os samples,howto's que vc vai se dar bem. Só uma observação é que os concepts são em inglês,mas digo que não e´ difícil de entender,é inglês técnico mesmo. Se você dar atenção aos exemplos,você consegue acertar/corrigir os seus códigos,agora para entender um conceito legal tem que ler mesmo,mas repito que não é bicho de sete cabeças.Não sei como está o seu inglês. Aqui vai um link em portuguese caso precise: http://www.fundao.wiki.br/articles.asp?cod=154 Há dezenas em inglês http://www.oracle.com/pls/db102/portal.portal_db?selected=5 Este acima tem todos os guides da oracle.É destes que o Chiappa mencionou. http://dbis.ucdavis.edu/courses/sqltutorial/tutorial.pdf Antes de tudo de uma googleada,tem varios blogs por ae de gente fina,tem os foruns com respostas dadas anteriormente,tem pdf's,site da Oracle com samples.tutoriais aff,tem muita coisa. Abs, 2009/2/5 jlchiappa jlchia...@yahoo.com.br Sim, há muuuita diferença entre Oracle x SS, não só na programação mas no modo de usar, nos conceitos (por exemplo, que locks bloqueiam reads, no Oracle isso não é assim, não há begin trans, etc, etc) - há MESMO muitas diferenças CAPITAIS entre esses dois, a minha recomendação é mesmo vc por de lado um pouco o que vc sabe do SS e começar o estudo do Oracle pelos manuais de Concepts, de SQL reference e pelo de programação PL/SQL, que são os básicos de tudo... No caso em questão me parece que vc está fazendo SELECT coluna1, coluna2, ..., colunaN FROM tabela, essa sintaxe é aceita no dialeto SQLdo banco Oracle ** MAS NÃO *** na linguagem procedural dele, o PL/SQL, em PL/SQL o trecho tem que ser : SELECT coluna1, coluna2, ..., colunaN INTO variavel1, variavel2 FROM tabela . Ou vc pode usar uma variável ROWTYPE, que já acomoda as colunas todas. Esses conceitos são totalmente explicados no manual de PL/SQL, o recomendo. []s Chiappa --- Em oracle_br@yahoogrupos.com.br oracle_br%40yahoogrupos.com.br, Flaviano, Wellington (GE Money) wellington.flavi...@... escreveu Não é possível ... Tá dando erro ... Hehehe ... Não sabia que era tanta diferença assim ... Olha o código... DECLARE V_PROPOSTA VARCHAR(12) := '109000617236'; V_PRODUTO NUMBER := 3; V_CLIENTID NUMBER := 5; V_DATA DATE := SYSDATE; V_CAMPANHA NUMBER := 61; V_TABELA_FINANCEIRA VARCHAR(5) := 'FAW'; BEGIN SELECT DISTINCT ..(tem várias colunas) FROM TRN_APPL_REQUESTS TAR, RESULTBLKADD RB, RESULTBLOCK R, APPLICANT A, INTERNAL I, EXTERNAL E, PRODUCT P WHERE TAR.SEQ_REQUEST = RB.SEQ_REQUEST AND TAR.SEQ_REQUEST = R.SEQ_REQUEST AND TAR.SEQ_REQUEST = A.SEQ_REQUEST -- aqui está o erro: ORA-06550 / PL/SQL:ORA-00933 AND TAR.SEQ_REQUEST = I.SEQ_REQUEST AND TAR.SEQ_REQUEST = E.SEQ_REQUEST AND TAR.SEQ_REQUEST = P.SEQ_REQUEST AND TAR.ID_APPLICATION = V_PROPOSTA AND A.ACDICO_PRODUCT = V_PRODUTO AND A.ACDICO_CLIENTID = V_CLIENTID AND TRUNC(TAR.DT_INSERT)= TRUNC(V_DATA) AND I.IPSMNM_SPARE3 = V_CAMPANHA AND P.PSPDCR_SPARE1 = V_TABELA_FINANCEIRA ORDER BY TAR.ID_APPLICATION, TRUNC(TAR.DT_INSERT), CAST(R.NO_SEMCALL AS VARCHAR(2)) END Agora ... Que merda estou fazendo de errado ??? Obs.: Quando eu rodo o select ... Sem