ALTER SESSION SET NLS_DATE_FORMAT + SELECT

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

Pessoal,

Quando faço inserções nas tabelas alterando sessão, tudo ocorre ok, mas quando faço select, ocorre erro:

vejam como está:

NO INSERT:

Selecionar tudo

BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''dd/mm/yyyy hh24:mi:ss'''; 
INSERT INTO TBL_PLN_TARCOB VALUES (CD_TARCOB.NEXTVAL, '05/11/2007', 890854, 'DIEZO GOMES DOS SANTOS', 0, 10, 0); 
INSERT INTO TBL_PLN_TARCOB VALUES (CD_TARCOB.NEXTVAL, '05/11/2007', 891102, 'RAPHAEL DE FREITAS OLIVEIRA', 0, 9, 0); 
INSERT INTO TBL_PLN_TARCOB VALUES (CD_TARCOB.NEXTVAL, '05/11/2007', 891513, 'THAIS GONCALVES GOMES', 0, 9, 0);  
COMMIT; 
END;
Isto está OK!

NO SELECT:

Selecionar tudo

BEGIN EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''dd/mm/yyyy hh24:mi:ss'''; 
SELECT DISTINCT L.MATRICULA, M.NM_REP, L.DATA, M.TENTATIVAS, M.CONTATOS, M.CONTATOS_EFETIVOS, M.RECHAMADA, M.SUCESSO, M.TPO_FCH_TELA, L.CHAMADAS_ATENDIDAS,
                                                 L.MEDIA_ATENDIMENTO, L.MEDIA_CONSERVACAO, L.MEDIA_POS_ATENDIMENTO, L.MEDIA_DISPONIVEL, L.MEDIA_PAUSA, P.MEDIA_TMP_LOGADO, 
                                                 P.MEDIA_TMP_TRABALHADO, P.MEDIA_TMP_RANKING, P.MEDIA_TMP_DISPONIVEL, P.MEDIA_TMP_PAUSA0, P.MEDIA_TMP_PAUSA1, P.MEDIA_TMP_PAUSA2, 
                                                 P.MEDIA_TMP_PAUSA3, P.MEDIA_TMP_PAUSA4, P.MEDIA_TMP_PAUSA5, P.MEDIA_TMP_PAUSA6, P.MEDIA_TMP_PAUSA7, P.MEDIA_TMP_PAUSA8, 
                                                 P.MEDIA_TMP_PAUSA9, P.MEDIA_TMP_PAUSA_OUTROS, P.MEDIA_TMP_PAUSA, DDI21F.OS_ABERTAS DDI21F, LIGUED.OS_ABERTAS LIGUED,
												 MDO_150.OS_ABERTAS MDO_150, MDO_21.OS_ABERTAS MDO_21, MDO_50.OS_ABERTAS MDO_50, MDO_99.OS_ABERTAS MDO_99, MM120F.OS_ABERTAS MM120F,
												 MM120N.OS_ABERTAS MM120N, MM150C.OS_ABERTAS MM150C, MM300C.OS_ABERTAS MM300C, MM500F.OS_ABERTAS MM500F, MM60CO.OS_ABERTAS MM60CO, 
												 MM60FS.OS_ABERTAS MM60FS, MM60NO.OS_ABERTAS MM60NO, MULTI100.OS_ABERTAS MULTI100, MULTI200.OS_ABERTAS MULTI200,
												 MULTI300.OS_ABERTAS MULTI300, PAISES.OS_ABERTAS PAISES, SIM21O.OS_ABERTAS SIM21O, SIMPLU.OS_ABERTAS SIMPLU,
												 TARCOB.OS_ABERTAS TARCOB, TARDDD.OS_ABERTAS TARDDD
                                                 FROM TBL_PLN_MAGELLAN M, TBL_PLN_LUCENT L, TBL_PLN_PAUSAS P, TBL_PLN_DDI21F DDI21F, TBL_PLN_LIGUED LIGUED, TBL_PLN_MDO_150 MDO_150,
												 	  TBL_PLN_MDO_21 MDO_21, TBL_PLN_MDO_50 MDO_50, TBL_PLN_MDO_99 MDO_99, TBL_PLN_MM120F MM120F, TBL_PLN_MM120N MM120N,
													  TBL_PLN_MM150C MM150C, TBL_PLN_MM300C MM300C, TBL_PLN_MM500F MM500F, TBL_PLN_MM60CO MM60CO, TBL_PLN_MM60FS MM60FS,
													  TBL_PLN_MM60NO MM60NO, TBL_PLN_MULTI100 MULTI100, TBL_PLN_MULTI200 MULTI200, TBL_PLN_MULTI300 MULTI300,
													  TBL_PLN_PAISES PAISES, TBL_PLN_SIM21O SIM21O, TBL_PLN_SIMPLU SIMPLU, TBL_PLN_TARCOB TARCOB, TBL_PLN_TARDDD TARDDD  
                                                 WHERE M.NM_REP(+) = L.NM_REP AND L.NM_REP = P.NM_REP(+) AND L.NM_REP='ADRIAN AVANCINI MENEZES' AND M.DATA = '30/10/2007' AND DDI21F.NM_REP(+) = L.NM_REP
												 	   AND LIGUED.NM_REP(+) = L.NM_REP AND MDO_150.NM_REP(+) = L.NM_REP AND MDO_21.NM_REP(+) = L.NM_REP
													   AND MDO_50.NM_REP(+) = L.NM_REP AND MDO_99.NM_REP(+) = L.NM_REP AND MM120F.NM_REP(+) = L.NM_REP AND MM120N.NM_REP(+) = L.NM_REP
													   AND MM150C.NM_REP(+) = L.NM_REP AND MM300C.NM_REP(+) = L.NM_REP AND MM500F.NM_REP(+) = L.NM_REP AND MM60CO.NM_REP(+) = L.NM_REP
													   AND MM60FS.NM_REP(+) = L.NM_REP AND MM60NO.NM_REP(+) = L.NM_REP AND MULTI100.NM_REP(+) = L.NM_REP AND MULTI200.NM_REP(+) = L.NM_REP
													   AND MULTI300.NM_REP(+) = L.NM_REP AND PAISES.NM_REP(+) = L.NM_REP AND SIM21O.NM_REP(+) = L.NM_REP
													   AND SIMPLU.NM_REP(+) = L.NM_REP AND TARCOB.NM_REP(+) = L.NM_REP AND TARDDD.NM_REP(+) = L.NM_REP;
END;
Ocorre erro!

Poderiam me ajudar com isso? O que estou fazendo de erra?
Desde já agradeço.
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Cayo, beleza??

cara, você poderia postar a versão do seu banco e o erro que está dando?

[]'s
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

E aí irmão, tudo ótimo!

O erro que está ocorrendo é:

Selecionar tudo

ORA-06550: line 2, column 1:
PLS-00428: an INTO clause is expected in this SELECT statement
e a versão do banco é 8.0

Estranho no insert funcionar e no select não funcionar...
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, beleza?

você está dentro de um BEGIN/END, dando um SELECT sem o INTO.

Se estiver no SQL Plus* e for somente listar, dê o BEGIN/END somente para o Execute Immediate e, depois faça o SELECT fora dele, beleza?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Então,

esse erro ai não é por causa do formado da data, nesse caso você está montando um bloco anonimo BEGIN... END;, nesse caso você precisa apontar o resultado do seu select pra alguma variavel utilizando o INTO.
por exemplo.

Selecionar tudo

SQL> DECLARE
  2     v_DATA DATE;
  3  BEGIN
  4     SELECT SYSDATE INTO v_DATA FROM dual;
  5  END;
  6  /

PL/SQL procedure successfully completed.
[]'s
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

TREVISOLLI

De acordo com a sua ajuda, o comando ficou aceitável. Mas quando tento executar para retornar valor, ocorre os seguintes erros:

Selecionar tudo

ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "SELECT" 
ORA-06550: line 23, column 111:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:

   . ( * @ % & - + ; / at for mod rem <an exponent (**)> and or
   group having intersect minus order start union where connect
   ||
TINECKS

Eu já havia visto um artigo como este, o problema é que meu retorno não é uma variável, e sim uma linha inteira (row).

Obrigado pela atenção pessoal!!!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, posta aqui o teu select completo, seria esse acima mesmo?
A gente dá uma olhada...
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

TREVISOLLI

O código é o que está acima mesmo. Note que no INSERT ele funciona, no SELECT não funciona.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Faça um teste executando primeiro este:

Selecionar tudo

BEGIN 
   EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''dd/mm/yyyy hh24:mi:ss''';
END;			 
E depois este trecho DO código:

Selecionar tudo

 
SELECT DISTINCT l.matricula, m.nm_rep, 
                l.DATA, 
																m.tentativas, 
																m.contatos,
                m.contatos_efetivos, 
																m.rechamada, m.sucesso, 
																m.tpo_fch_tela,
                l.chamadas_atendidas, 
																l.media_atendimento,
                l.media_conservacao, 
																l.media_pos_atendimento,
                l.media_disponivel, 
																l.media_pausa, 
																p.media_tmp_logado,
                p.media_tmp_trabalhado, 
																p.media_tmp_ranking,
                p.media_tmp_disponivel, 
																p.media_tmp_pausa0,
                p.media_tmp_pausa1, 
																p.media_tmp_pausa2, 
																p.media_tmp_pausa3,
                p.media_tmp_pausa4, 
																p.media_tmp_pausa5, 
																p.media_tmp_pausa6,
                p.media_tmp_pausa7, 
																p.media_tmp_pausa8, 
																p.media_tmp_pausa9,
                p.media_tmp_pausa_outros, 
																p.media_tmp_pausa,
                ddi21f.os_abertas ddi21f, 
																ligued.os_abertas ligued,
                mdo_150.os_abertas mdo_150, 
																mdo_21.os_abertas mdo_21,
                mdo_50.os_abertas mdo_50, 
																mdo_99.os_abertas mdo_99,
                mm120f.os_abertas mm120f, 
																mm120n.os_abertas mm120n,
                mm150c.os_abertas mm150c, 
																mm300c.os_abertas mm300c,
                mm500f.os_abertas mm500f, 
																mm60co.os_abertas mm60co,
                mm60fs.os_abertas mm60fs, 
																mm60no.os_abertas mm60no,
                multi100.os_abertas multi100, 
																multi200.os_abertas multi200,
                multi300.os_abertas multi300, 
																paises.os_abertas paises,
                sim21o.os_abertas sim21o, 
																simplu.os_abertas simplu,
                tarcob.os_abertas tarcob, 
																tarddd.os_abertas tarddd
           FROM tbl_pln_magellan m,
                tbl_pln_lucent l,
                tbl_pln_pausas p,
                tbl_pln_ddi21f ddi21f,
                tbl_pln_ligued ligued,
                tbl_pln_mdo_150 mdo_150,
                tbl_pln_mdo_21 mdo_21,
                tbl_pln_mdo_50 mdo_50,
                tbl_pln_mdo_99 mdo_99,
                tbl_pln_mm120f mm120f,
                tbl_pln_mm120n mm120n,
                tbl_pln_mm150c mm150c,
                tbl_pln_mm300c mm300c,
                tbl_pln_mm500f mm500f,
                tbl_pln_mm60co mm60co,
                tbl_pln_mm60fs mm60fs,
                tbl_pln_mm60no mm60no,
                tbl_pln_multi100 multi100,
                tbl_pln_multi200 multi200,
                tbl_pln_multi300 multi300,
                tbl_pln_paises paises,
                tbl_pln_sim21o sim21o,
                tbl_pln_simplu simplu,
                tbl_pln_tarcob tarcob,
                tbl_pln_tarddd tarddd
          WHERE m.nm_rep(+) = l.nm_rep
            AND l.nm_rep = p.nm_rep(+)
            AND l.nm_rep = 'ADRIAN AVANCINI MENEZES'
            AND m.DATA = '30/10/2007'
            AND ddi21f.nm_rep(+) = l.nm_rep
            AND ligued.nm_rep(+) = l.nm_rep
            AND mdo_150.nm_rep(+) = l.nm_rep
            AND mdo_21.nm_rep(+) = l.nm_rep
            AND mdo_50.nm_rep(+) = l.nm_rep
            AND mdo_99.nm_rep(+) = l.nm_rep
            AND mm120f.nm_rep(+) = l.nm_rep
            AND mm120n.nm_rep(+) = l.nm_rep
            AND mm150c.nm_rep(+) = l.nm_rep
            AND mm300c.nm_rep(+) = l.nm_rep
            AND mm500f.nm_rep(+) = l.nm_rep
            AND mm60co.nm_rep(+) = l.nm_rep
            AND mm60fs.nm_rep(+) = l.nm_rep
            AND mm60no.nm_rep(+) = l.nm_rep
            AND multi100.nm_rep(+) = l.nm_rep
            AND multi200.nm_rep(+) = l.nm_rep
            AND multi300.nm_rep(+) = l.nm_rep
            AND paises.nm_rep(+) = l.nm_rep
            AND sim21o.nm_rep(+) = l.nm_rep
            AND simplu.nm_rep(+) = l.nm_rep
            AND tarcob.nm_rep(+) = l.nm_rep
            AND tarddd.nm_rep(+) = l.nm_rep;

Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Cayo, beleza??

segue um exemplo de como utilizar o rowtype..

Selecionar tudo

DECLARE
  CURSOR cur_DADOS IS
    SELECT DISTINCT L.MATRICULA,
                    M.NM_REP,
                    L.DATA,
                    M.TENTATIVAS,
                    M.CONTATOS,
                    M.CONTATOS_EFETIVOS,
                    M.RECHAMADA,
                    M.SUCESSO,
                    M.TPO_FCH_TELA,
                    L.CHAMADAS_ATENDIDAS,
                    L.MEDIA_ATENDIMENTO,
                    L.MEDIA_CONSERVACAO,
                    L.MEDIA_POS_ATENDIMENTO,
                    L.MEDIA_DISPONIVEL,
                    L.MEDIA_PAUSA,
                    P.MEDIA_TMP_LOGADO,
                    P.MEDIA_TMP_TRABALHADO,
                    P.MEDIA_TMP_RANKING,
                    P.MEDIA_TMP_DISPONIVEL,
                    P.MEDIA_TMP_PAUSA0,
                    P.MEDIA_TMP_PAUSA1,
                    P.MEDIA_TMP_PAUSA2,
                    P.MEDIA_TMP_PAUSA3,
                    P.MEDIA_TMP_PAUSA4,
                    P.MEDIA_TMP_PAUSA5,
                    P.MEDIA_TMP_PAUSA6,
                    P.MEDIA_TMP_PAUSA7,
                    P.MEDIA_TMP_PAUSA8,
                    P.MEDIA_TMP_PAUSA9,
                    P.MEDIA_TMP_PAUSA_OUTROS,
                    P.MEDIA_TMP_PAUSA,
                    DDI21F.OS_ABERTAS DDI21F,
                    LIGUED.OS_ABERTAS LIGUED,
                    MDO_150.OS_ABERTAS MDO_150,
                    MDO_21.OS_ABERTAS MDO_21,
                    MDO_50.OS_ABERTAS MDO_50,
                    MDO_99.OS_ABERTAS MDO_99,
                    MM120F.OS_ABERTAS MM120F,
                    MM120N.OS_ABERTAS MM120N,
                    MM150C.OS_ABERTAS MM150C,
                    MM300C.OS_ABERTAS MM300C,
                    MM500F.OS_ABERTAS MM500F,
                    MM60CO.OS_ABERTAS MM60CO,
                    MM60FS.OS_ABERTAS MM60FS,
                    MM60NO.OS_ABERTAS MM60NO,
                    MULTI100.OS_ABERTAS MULTI100,
                    MULTI200.OS_ABERTAS MULTI200,
                    MULTI300.OS_ABERTAS MULTI300,
                    PAISES.OS_ABERTAS PAISES,
                    SIM21O.OS_ABERTAS SIM21O,
                    SIMPLU.OS_ABERTAS SIMPLU,
                    TARCOB.OS_ABERTAS TARCOB,
                    TARDDD.OS_ABERTAS TARDDD
      FROM TBL_PLN_MAGELLAN M,
           TBL_PLN_LUCENT   L,
           TBL_PLN_PAUSAS   P,
           TBL_PLN_DDI21F   DDI21F,
           TBL_PLN_LIGUED   LIGUED,
           TBL_PLN_MDO_150  MDO_150,
           TBL_PLN_MDO_21   MDO_21,
           TBL_PLN_MDO_50   MDO_50,
           TBL_PLN_MDO_99   MDO_99,
           TBL_PLN_MM120F   MM120F,
           TBL_PLN_MM120N   MM120N,
           TBL_PLN_MM150C   MM150C,
           TBL_PLN_MM300C   MM300C,
           TBL_PLN_MM500F   MM500F,
           TBL_PLN_MM60CO   MM60CO,
           TBL_PLN_MM60FS   MM60FS,
           TBL_PLN_MM60NO   MM60NO,
           TBL_PLN_MULTI100 MULTI100,
           TBL_PLN_MULTI200 MULTI200,
           TBL_PLN_MULTI300 MULTI300,
           TBL_PLN_PAISES   PAISES,
           TBL_PLN_SIM21O   SIM21O,
           TBL_PLN_SIMPLU   SIMPLU,
           TBL_PLN_TARCOB   TARCOB,
           TBL_PLN_TARDDD   TARDDD
     WHERE M.NM_REP(+) = L.NM_REP
       AND L.NM_REP = P.NM_REP(+)
       AND L.NM_REP = 'ADRIAN AVANCINI MENEZES'
       AND M.DATA = '30/10/2007'
       AND DDI21F.NM_REP(+) = L.NM_REP
       AND LIGUED.NM_REP(+) = L.NM_REP
       AND MDO_150.NM_REP(+) = L.NM_REP
       AND MDO_21.NM_REP(+) = L.NM_REP
       AND MDO_50.NM_REP(+) = L.NM_REP
       AND MDO_99.NM_REP(+) = L.NM_REP
       AND MM120F.NM_REP(+) = L.NM_REP
       AND MM120N.NM_REP(+) = L.NM_REP
       AND MM150C.NM_REP(+) = L.NM_REP
       AND MM300C.NM_REP(+) = L.NM_REP
       AND MM500F.NM_REP(+) = L.NM_REP
       AND MM60CO.NM_REP(+) = L.NM_REP
       AND MM60FS.NM_REP(+) = L.NM_REP
       AND MM60NO.NM_REP(+) = L.NM_REP
       AND MULTI100.NM_REP(+) = L.NM_REP
       AND MULTI200.NM_REP(+) = L.NM_REP
       AND MULTI300.NM_REP(+) = L.NM_REP
       AND PAISES.NM_REP(+) = L.NM_REP
       AND SIM21O.NM_REP(+) = L.NM_REP
       AND SIMPLU.NM_REP(+) = L.NM_REP
       AND TARCOB.NM_REP(+) = L.NM_REP
       AND TARDDD.NM_REP(+) = L.NM_REP;

  reg_LINHA c_DADOS%ROWTYPE;
BEGIN
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''dd/mm/yyyy hh24:mi:ss''';

  /* OPCAO 1, CASO você USE SOMENTE UM REGISTRO */
  OPEN c_DADOS;
  FETCH c_DADOS
    INTO reg_LINHA;
     DBMS_OUTPUT.PUT_LINE('MATRICULA : ' || reg_LINHA.MATRICULA);
     DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.NM_REP);
  -- resto dos campos...
  CLOSE c_DADOS;

  /* OPCAO 2, CASO SEJA VARIOS REGISTROS, NESSE CASO não PRECISA DA VARIAVEL */
  FOR reg_DADOS IN c_DADOS LOOP
    DBMS_OUTPUT.PUT_LINE('MATRICULA : ' || reg_DADOS.MATRICULA);
    DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_DADOS.NM_REP);
    -- resto dos campos...
  END LOOP;
END;
ai tem 2 exemplos, um utilizando o rowtype caso você utilize somete um registro, ou o loop pra varios registros..

[]'s
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

TREVISOLLI

Executando os comandos separadamente realmente funciona, eu já havia testado. Porém, por se tratar de uma aplicação que estou fazendo em .NET, na função ExecuteNonQuery(), os comandos serão executados de uma vez. Assim como está sendo feito no INSERT.

TINECKS

Vou tentar agora fazer desta forma.

Obrigado mais uma vez.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

beleza brother,

Então a dica do Tinecks te ajuda.
Uma outra forma seria montar um cursor e colocar num LOOP...
Mas, ai fica a teu critério velho.
qualquer coisa, manda ai.
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

Valeu TREVISOLLI

TINECKS:

Desse jeito o código compila, mas na gridview do toad não tem nenhum dado sendo retornado, onde estão os dados?? Não retorna nada?
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

Então, desse jeito ai nele não vai retornar no grid não, ele vai exibir somente na area de output da sua ferramenta, você pode ver q existe o dbms_output.put_line, que faz exatamente isso.
Se você precisar dos dados é possível rodar esses comandos sem que seja um bloco anonimo (begin, end);
Por exemplo:

Selecionar tudo

SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'dd/mm/yyyy hh24:mi:ss'
  2  /

Session altered.

SQL> SELECT SYSDATE FROM DUAL WHERE TRUNC(SYSDATE) = '19/11/2007'
  2  /

SYSDATE
-------------------
19/11/2007 18:10:28
nesse caso eu dei um select na DUAL, mas você poderia substituir pelo seu select.

[]'s
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

TINECKS

fiz tudo que me disse cara, e como te falei, no data grid (tanto da aplicação quanto do banco) vem vazio.

fiz isso aí olha:

Selecionar tudo

DECLARE 
  CURSOR cur_DADOS IS 
    SELECT DISTINCT L.MATRICULA, 
                    M.NM_REP, 
                    L.DATA, 
                    M.TENTATIVAS, 
                    M.CONTATOS, 
                    M.CONTATOS_EFETIVOS, 
                    M.RECHAMADA, 
                    M.SUCESSO, 
                    M.TPO_FCH_TELA, 
                    L.CHAMADAS_ATENDIDAS, 
                    L.MEDIA_ATENDIMENTO, 
                    L.MEDIA_CONSERVACAO, 
                    L.MEDIA_POS_ATENDIMENTO, 
                    L.MEDIA_DISPONIVEL, 
                    L.MEDIA_PAUSA, 
                    P.MEDIA_TMP_LOGADO, 
                    P.MEDIA_TMP_TRABALHADO, 
                    P.MEDIA_TMP_RANKING, 
                    P.MEDIA_TMP_DISPONIVEL, 
                    P.MEDIA_TMP_PAUSA0, 
                    P.MEDIA_TMP_PAUSA1, 
                    P.MEDIA_TMP_PAUSA2, 
                    P.MEDIA_TMP_PAUSA3, 
                    P.MEDIA_TMP_PAUSA4, 
                    P.MEDIA_TMP_PAUSA5, 
                    P.MEDIA_TMP_PAUSA6, 
                    P.MEDIA_TMP_PAUSA7, 
                    P.MEDIA_TMP_PAUSA8, 
                    P.MEDIA_TMP_PAUSA9, 
                    P.MEDIA_TMP_PAUSA_OUTROS, 
                    P.MEDIA_TMP_PAUSA, 
                    DDI21F.OS_ABERTAS DDI21F, 
                    LIGUED.OS_ABERTAS LIGUED, 
                    MDO_150.OS_ABERTAS MDO_150, 
                    MDO_21.OS_ABERTAS MDO_21, 
                    MDO_50.OS_ABERTAS MDO_50, 
                    MDO_99.OS_ABERTAS MDO_99, 
                    MM120F.OS_ABERTAS MM120F, 
                    MM120N.OS_ABERTAS MM120N, 
                    MM150C.OS_ABERTAS MM150C, 
                    MM300C.OS_ABERTAS MM300C, 
                    MM500F.OS_ABERTAS MM500F, 
                    MM60CO.OS_ABERTAS MM60CO, 
                    MM60FS.OS_ABERTAS MM60FS, 
                    MM60NO.OS_ABERTAS MM60NO, 
                    MULTI100.OS_ABERTAS MULTI100, 
                    MULTI200.OS_ABERTAS MULTI200, 
                    MULTI300.OS_ABERTAS MULTI300, 
                    PAISES.OS_ABERTAS PAISES, 
                    SIM21O.OS_ABERTAS SIM21O, 
                    SIMPLU.OS_ABERTAS SIMPLU, 
                    TARCOB.OS_ABERTAS TARCOB, 
                    TARDDD.OS_ABERTAS TARDDD 
      FROM TBL_PLN_MAGELLAN M, 
           TBL_PLN_LUCENT   L, 
           TBL_PLN_PAUSAS   P, 
           TBL_PLN_DDI21F   DDI21F, 
           TBL_PLN_LIGUED   LIGUED, 
           TBL_PLN_MDO_150  MDO_150, 
           TBL_PLN_MDO_21   MDO_21, 
           TBL_PLN_MDO_50   MDO_50, 
           TBL_PLN_MDO_99   MDO_99, 
           TBL_PLN_MM120F   MM120F, 
           TBL_PLN_MM120N   MM120N, 
           TBL_PLN_MM150C   MM150C, 
           TBL_PLN_MM300C   MM300C, 
           TBL_PLN_MM500F   MM500F, 
           TBL_PLN_MM60CO   MM60CO, 
           TBL_PLN_MM60FS   MM60FS, 
           TBL_PLN_MM60NO   MM60NO, 
           TBL_PLN_MULTI100 MULTI100, 
           TBL_PLN_MULTI200 MULTI200, 
           TBL_PLN_MULTI300 MULTI300, 
           TBL_PLN_PAISES   PAISES, 
           TBL_PLN_SIM21O   SIM21O, 
           TBL_PLN_SIMPLU   SIMPLU, 
           TBL_PLN_TARCOB   TARCOB, 
           TBL_PLN_TARDDD   TARDDD 
     WHERE M.NM_REP(+) = L.NM_REP 
       AND L.NM_REP = P.NM_REP(+) 
       AND L.NM_REP = 'ADRIAN AVANCINI MENEZES' 
       AND M.DATA = '30/10/2007' 
       AND DDI21F.NM_REP(+) = L.NM_REP 
       AND LIGUED.NM_REP(+) = L.NM_REP 
       AND MDO_150.NM_REP(+) = L.NM_REP 
       AND MDO_21.NM_REP(+) = L.NM_REP 
       AND MDO_50.NM_REP(+) = L.NM_REP 
       AND MDO_99.NM_REP(+) = L.NM_REP 
       AND MM120F.NM_REP(+) = L.NM_REP 
       AND MM120N.NM_REP(+) = L.NM_REP 
       AND MM150C.NM_REP(+) = L.NM_REP 
       AND MM300C.NM_REP(+) = L.NM_REP 
       AND MM500F.NM_REP(+) = L.NM_REP 
       AND MM60CO.NM_REP(+) = L.NM_REP 
       AND MM60FS.NM_REP(+) = L.NM_REP 
       AND MM60NO.NM_REP(+) = L.NM_REP 
       AND MULTI100.NM_REP(+) = L.NM_REP 
       AND MULTI200.NM_REP(+) = L.NM_REP 
       AND MULTI300.NM_REP(+) = L.NM_REP 
       AND PAISES.NM_REP(+) = L.NM_REP 
       AND SIM21O.NM_REP(+) = L.NM_REP 
       AND SIMPLU.NM_REP(+) = L.NM_REP 
       AND TARCOB.NM_REP(+) = L.NM_REP 
       AND TARDDD.NM_REP(+) = L.NM_REP; 

  reg_LINHA cur_DADOS%ROWTYPE; 
BEGIN 
  EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT = ''dd/mm/yyyy hh24:mi:ss'''; 
  OPEN cur_DADOS; 
  FETCH cur_DADOS 
    INTO reg_LINHA; 
     DBMS_OUTPUT.PUT_LINE('MATRICULA : ' || reg_LINHA.MATRICULA); 
     DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.NM_REP);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.DATA);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.TENTATIVAS);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.CONTATOS);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.CONTATOS_EFETIVOS);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.RECHAMADA);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.SUCESSO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.TPO_FCH_TELA);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.CHAMADAS_ATENDIDAS);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_ATENDIMENTO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_CONSERVACAO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_POS_ATENDIMENTO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_DISPONIVEL);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_PAUSA);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_LOGADO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_TRABALHADO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_RANKING);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_DISPONIVEL);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA0);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA1);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA2);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA3);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA4);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA5);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA6);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA7);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA8);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA9);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA_OUTROS);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MEDIA_TMP_PAUSA);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.DDI21F);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.LIGUED);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MDO_150);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MDO_21);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MDO_50);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MDO_99);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM120N);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM150C);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM300C);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM500F);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM60CO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM60FS);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MM60NO);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MULTI100);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MULTI200);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.MULTI300);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.PAISES);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.SIM21O);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.SIMPLU);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.TARCOB);
	 DBMS_OUTPUT.PUT_LINE('NM_REP    : ' || reg_LINHA.TARDDD);
  CLOSE cur_DADOS; 
END;
Qual a forma que você disse amigo? não consegui entender!
Abraço!!
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Não entendo da tecnologia que está utilizando, mas, de qualquer forma, o que precisa fazer é, ao invés de dar DBMS_OUTPUT é, jogar esse valor de Reg_Linha (depois do FETCH...INTO...) para o teu objeto.
Tenta ai e, qualquer coisa, manda pra gente.
Tineks
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 365
Registrado em: Ter, 24 Mai 2005 2:24 pm
Localização: Araraquara - SP
Cristiano (Tineks)
Araraquara - SP

E ai Cayo, beleza?

cara, a forma de se montar a consulta depende de onde você vai utilizar o retorno dela. O resultado do select você precisa visualizar na sua aplicação ou dentro da sua ferramenta de desenvolvimento?

[]'s
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Eu to achando que o RETURNING do Execute Immediate resolveria.
Algo assim:

Selecionar tudo

 declare
   sql_stmt    VARCHAR2(200);
   emp_rec     emp%ROWTYPE;
   emp_id      NUMBER(4) := 7566;
begin
   sql_stmt := 'SELECT * FROM emp WHERE empno = :id';
   EXECUTE IMMEDIATE sql_stmt INTO emp_rec USING emp_id;
end;
Assim retorna valores do SQL dinâmico!
Cayo Magno Fontana
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 23
Registrado em: Sex, 16 Nov 2007 8:12 am
Localização: ES

Amigos,

Mais uma vez muito obrigado pela atenção de todos.

Resolvi passando 2 querys separadas por uma conexão, assim:

Selecionar tudo

            cmd.CommandType = CommandType.Text;
            conn.Open();
            cmd.ExecuteNonQuery(); // aqui vai o altersession
            oda.Fill(dsReps); // aqui vai a query select

fiz d modo separado, mas muito obrigado mesmo pelo suporte que deram!
Abraço
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Cayo Magno Fontana escreveu:Amigos,

Mais uma vez muito obrigado pela atenção de todos.

Resolvi passando 2 querys separadas por uma conexão, assim:

Selecionar tudo

            cmd.CommandType = CommandType.Text;
            conn.Open();
            cmd.ExecuteNonQuery(); // aqui vai o altersession
            oda.Fill(dsReps); // aqui vai a query select

fiz d modo separado, mas muito obrigado mesmo pelo suporte que deram!
Abraço
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Blzera brother.

Precisando, conta com a gente.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante