Olá caros amigos, gostaria de tirar a seguinte duvida com vocês, a posição de um parâmetro quando declarado tem que ser o mesmo de quando for passar o seu valor ao chamar a função, sendo assim gostaria de saber o porque quando eu não passo nenhum valor para um determinado parâmetro ele não pega o seu valor default. o que poderia ser quando acontece esse tipo de coisa.
obrigado...
Funções e parametros
-
- Rank: Programador Sênior
- Mensagens: 53
- Registrado em: Seg, 31 Mai 2010 8:54 am
- Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu
Luís Gustavo Verri Zacheu
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

vê se ajuda
-
- Rank: Programador Sênior
- Mensagens: 53
- Registrado em: Seg, 31 Mai 2010 8:54 am
- Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu
Luís Gustavo Verri Zacheu
Victor, então o problema é o seguinte eu estou passando um valor default para um determinado paramentro, porem quando chamo a função e não passo esse valor a função não pegao o valor qu esta por default.
O problema que é dificil eu colar aqui o codigo.
O problema que é dificil eu colar aqui o codigo.
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

cola so a declaração da função e a sua chamada..
da pra ser?
da pra ser?
-
- Rank: Programador Sênior
- Mensagens: 53
- Registrado em: Seg, 31 Mai 2010 8:54 am
- Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu
Luís Gustavo Verri Zacheu
Olha está assim, então quando eu chamo a function eu não estou passando o 'p6' no paramentro então por default ele deveria pegar o valor 2 porem não está dando certo, dai quando eu passo o parametro explicitamente ele funciona.
FUNCTION FUNC (
p1 IN DEFAULT 'AA',
p2 IN table.campo1%TYPE,
p3 IN table.campo2%TYPE,
p4 IN table.campo3%TYPE,
p5 IN table.campo4%TYPE DEFAULT 1,
p6 IN NUMBER DEFAULT 2,
p7 IN table.campo5%TYPE DEFAULT 0,
p8 IN CHAR DEFAULT '1',
p9 IN NUMBER DEFAULT 0,
p10 IN table.campo6%TYPE DEFAULT 0,
p11 IN VARCHAR DEFAULT '01',
p12 IN NUMBER DEFAULT 0
)
RETURN NUMBER
IS
-
- Moderador
- Mensagens: 1396
- Registrado em: Sex, 01 Fev 2008 2:06 pm
- Localização: Rio de Janeiro - RJ
- Contato:

você não postou a chamada da function como eu te pedi..
pelo que estou entendendo.. acontece que quando você não menciona o seu p6 na chamada o seu p7 vira p6, logo quem vai receber o valor default eo seu p12 que na chamada ficou sem valor
leia...
você tem que referenciar todos os seus parametros já que está pulando, uma parametro do meio..
ou então altere a declaração da sua function colocando o seu p6 em ultimo lugar..
pelo que estou entendendo.. acontece que quando você não menciona o seu p6 na chamada o seu p7 vira p6, logo quem vai receber o valor default eo seu p12 que na chamada ficou sem valor
leia...
Parameters may also be assigned a default value. You can either use the assignment operator (:=) or
use the DEFAULT keyword. When a parameter has a default value, you do not need to include that parameter
in the call. You MUST always include IN OUT and OUT parameters.
Sample parameter declarations:
(
parameter_1 IN VARCHAR2 := 'ABC',
parameter_2 IN VARCHAR2 DEFAULT 'ABC',
parameter_3 IN OUT NUMBER,
parameters_can_be_named_anything OUT DATE
)
Parameter Reference
Calling programs may refer to parameters either positionally or by named notation. It is considered a best
practice to refer to parameters via named notation. Almost no one does this consistently though (myself included).
Positional notation refers to listing the parameters by the position that they are declared. Using the example
above, we could positionally refer to the parameters as:
('def', 'ghi', v_number_variable, v_date_variable)
For Named notation, you would use the actual name of the parameter. This is very handy for large parameter lists
and for those parameter lists that have plenty of default values. When using named notation, the parameters do
not have to be listed in the order of declaration.
(parameter_3 => v_number_variable, parameter_1 => 'def', v_date_variable => v_date_variable)
ou então altere a declaração da sua function colocando o seu p6 em ultimo lugar..
-
- Rank: Programador Sênior
- Mensagens: 53
- Registrado em: Seg, 31 Mai 2010 8:54 am
- Localização: Londrina-Pr
Analista/Programador
Luís Gustavo Verri Zacheu
Luís Gustavo Verri Zacheu
Sim, isso mesmo deu certo aqui, era o posicionamento dos parametros mesmo...
Obrigado, pela atenção.
Obrigado, pela atenção.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes