Duvida Variaveis em Procedure

Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #95168
    Avatar de gordeonegordeone
    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
    Avatar de BogosBogos
    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
    Avatar de gordeonegordeone
    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.
plugins premium WordPress