Pular para o conteúdo
Visualizando 12 posts - 1 até 12 (de 12 do total)
  • Autor
    Posts
  • #75153
    Anônimo

      estou precisando de uma ajuda pra montar uma query d update…

      Queria algo equivalente em SQL Server…
      EX:

      UPDATE tabela01
      SET coluna01 = p_teste /*p_teste ? minha variavel*/
      FROM tabela01 t1, tabela02 t2
      WHERE t1.colunaA = t2.colunaA
      AND t1.colunaB = p_teste2 /*p_teste2 ? minha outra variavel d teste*/

      Ou seja, esse comando ? simples e funciona perfeitamente no SQL Server… s? que eu preciso fazer isso no Oracle 9i, pois eu nao tenho uma determinada coluna q preciso comparar na tabela T2, ela s? existe na tabela T1 que por sua vez est?o ligadas atrav?s de relacionamento.

      Algu?m poderia me ajudar com essa simples query por favor?

      Abra?os!

      #75154
      Anônimo

        vc pode usar vari?vel de sustitui??o.

        UPDATE tabela01
        SET coluna01 = &p_teste
        FROM tabela01 t1, tabela02 t2
        WHERE t1.colunaA = t2.colunaA
        AND t1.colunaB = &p_teste2 ;

        Abra?o.

        #75155
        Anônimo

          nao posso usar esse tipo d variavel pois eu uso procedure… logo, devo utilizar os parametros q recebo da procedure

          o problema ? q d? erro d sintaxe quando eu coloco essa query….

          ORA0933: Comando SQL nao encerrado adequadamente
          e ? praticamente a mesma query q postei aqui…

          Onde est? o problema ?

          #75156
          Avatar de Marcio68AlmeidaMarcio68Almeida
          Participante

            Acho que ? algo assim :
            Update tabela_1
            Set coluna = p_teste
            Where '1' = (Select '1'
            From tabela_2
            where tabela_2.coluna_1 = tabela_1.coluna_1)
            And coluna_2 = p_teste2

            Veja se funciona, n?o testei… 😆

            #75158
            Anônimo

              NAO FUNCIONA… POIS NA CLAUSULA WHERE EU QUERO ATUALIZAR UM CAMPO D UMA TABELA, Q SE NAO SE ENCONTRA NA TABELA Q TOU ATUALIZANDO…

              EXEMPLO….

              UPDATE T_1
              SET T_1.CAMPO1= 1,
              TT_1.BT_CAMPO2= 1
              WHERE ‘1’ = (SELECT ‘1’ FROM T_2 WHERE T_1.ID_1 = T_2.ID_1)
              AND T_2.CAMPO4= P_TESTE;

              OU SEJA, ISSO FALHA…

                  AND T_2.CAMPO4= P_TESTE;
              

              POIS A COLUNA
              CAMPO4 S? EXISTE NA TABELA T_2, E ESTOU ATUALIZANDO A TABELA T_1…. logo d? erro dizendo q esse campo nao existe na tabela T1… (o q ? uma verdade)..

              alguem pode ajudar???

              #75159
              Anônimo

                Fa?a assim:

                merge into tabela01
                using tabela02
                (on tabela01.colunaA = tabela02.colunaA)
                when matched then
                update set coluna01 = &p_teste where tabela01.colunaB = &p_teste2 ;

                Abra?o.

                #75161
                Avatar de Marcio68AlmeidaMarcio68Almeida
                Participante

                  Se esse ? o problema, ent?o t? f?cil… risos…
                  Eu havia entendido que a coluna pertencia a tabela 1
                  Basta colocar a clausula dentro dos par?nteses :
                  UPDATE T_1
                  SET T_1.CAMPO1= 1,
                  TT_1.BT_CAMPO2= 1
                  WHERE '1' = (SELECT '1' FROM T_2 WHERE T_1.ID_1 = T_2.ID_1
                  AND T_2.CAMPO4= P_TESTE);

                  #75163
                  Anônimo

                    NADA…

                    OLHA COMO FICOU MINHA QUERY….

                          MERGE INTO T_I_TRANS IT
                          USING T_TRANS T
                          (ON IT.ID_TRANS = T.ID_TRANS)
                          WHEN MATCHED THEN      
                               UPDATE SET  IT.B_DEL = 1,
                                           IT.B_COM = 1 
                               WHERE T.NU_T_TRANS = p_n_t_trans; 
                    

                    APARECE O SEGUINTE ERRO…

                    ORA-00969 missing ON keyword.

                    TEM IDEIA DO Q SEJA?

                    #75168
                    Anônimo

                      O ON ? fora do par?nteses

                      MERGE INTO T_I_TRANS IT
                      USING T_TRANS T
                      ON (IT.ID_TRANS = T.ID_TRANS)
                      WHEN MATCHED THEN
                      UPDATE SET IT.B_DEL = 1,
                      IT.B_COM = 1
                      WHERE T.NU_T_TRANS = p_n_t_trans;

                      Abra?o.

                      #75170
                      Anônimo

                        MESMO COLOCANDO FORA… D? O MESMO ERRO…

                        EU FIZ O TESTE ANTES D POSTAR AQUI… MAS NAO FOI NAO. EU EM UM SITE Q NAO POSSO COLOCAR CLAUSULA WHERE QND USO MERGE… ISSO PROCEDE? SENDO ASSIM COMO FICARIA?

                        ABS

                        #75172
                        Anônimo

                          Claro que pode!! j? fiz e testei aqui!!

                          A unica coisa que n?o pode ? dar um update no campo j? referenciado na cl?usula ON.

                          Abra?o.

                          #75173
                          Anônimo

                            Descobri o q ?!!
                            ? q vc est? usando uma vers?o de abaixo da 10g.

                            mas fa?a assim q deve d?:

                            MERGE INTO T_I_TRANS IT
                            USING T_TRANS T
                            ON (IT.ID_TRANS = T.ID_TRANS and T.NU_T_TRANS = p_n_t_trans)
                            WHEN MATCHED THEN
                            UPDATE SET IT.B_DEL = 1,
                            IT.B_COM = 1;

                          Visualizando 12 posts - 1 até 12 (de 12 do total)
                          • Você deve fazer login para responder a este tópico.
                          plugins premium WordPress