Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #95168
    gordeone
    Participante

      Ola Galera, so novo no forum, sou desenvolvedor delphi e c# e estou com uma duvida, criei uma procedure e como parametro criei da seguinte forma
      PROCEDURE InserirProcesso(vCOD_PLAS IN ENDI.COD_PLAS%Type,
      vORDEM_COMPRA IN TD_ENTREGA_ORDEM_COMPRA.NUM_ORDEM_COMPRA%TYPE) IS
      o tratamentro é o abaixo
      if ((vCOD_PLAS = 1409 or vCOD_PLAS = 1261) and (vORDEM_COMPRA > 0)) then
      INSERT INTO TD_ENTREGA_ORDEM_COMPRA (NUM_PROCESSO, NUM_ORDEM_COMPRA)
      VALUES (vNUM_PROCESSO, vORDEM_COMPRA);
      end if;

      testando pelo PLSQL vai numa boa, porém pelo delphi ele nao insere, dai o que eu fiz
      criei esta variavel
      lc_plas endi.cod_plas%type := vCOD_PLAS;
      e no if eu passei a nova variavel e nao a primeira, dai funcionou de boa pelo delphi e pelo PL
      a minha duvida é a seguinte, porque comparando uma variavel que tem o nome semelhante ao campo da tabela ele nao compara e sim temos que criar uma variavel com nome diferente para dar certo, ou nao tem nada a ver ? e o problema é outro ?

      #95171
      Bogos
      Participante

        É um erro quase que comum este.
        Numa instrução SQL dentro de um bloco PL/SQL, o Oracle da preferência aos nomes dos objetos na instrução, e caso não encontre é que ele varre as variáveis e objetos fora dela, ou seja, do bloco.
        Se caso numa instrução a tabela contenha um campo chamado “codigo” e você use este nome dentro do SQL, ele assumirá o valor do campo da tabela, e não de uma variável do bloco PL/SQL em que a instrução se encontra.

        Nessas horas é que os padrões de nomes se mostram úteis 😀

        Abraços!

        #95174
        gordeone
        Participante

          [quote=”Bogos”:3tjysrqu]É um erro quase que comum este.
          Numa instrução SQL dentro de um bloco PL/SQL, o Oracle da preferência aos nomes dos objetos na instrução, e caso não encontre é que ele varre as variáveis e objetos fora dela, ou seja, do bloco.
          Se caso numa instrução a tabela contenha um campo chamado “codigo” e você use este nome dentro do SQL, ele assumirá o valor do campo da tabela, e não de uma variável do bloco PL/SQL em que a instrução se encontra.

          Nessas horas é que os padrões de nomes se mostram úteis 😀

          Abraços![/quote]

          entao Bogos, só que assim, eu utilizei um nome parecido e nao o nome exato mesmo assim ele ja assume ? um exemplo o campo na tabela é cod_plas a variavel que eu criei foi vCod_plas, mesmo assim deu o problema que eu falei, tive de criar uma variavel com nome totalmente diferente para passar a instrução certa, é assim mesmo ?

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