programing

기본 null 매개 변수로 절차를 실행할 수 있습니까?

linuxpc 2023. 7. 25. 20:42
반응형

기본 null 매개 변수로 절차를 실행할 수 있습니까?

나는 최근에 다음과 같이 정의된 절차를 만들었습니다.

create or replace
PACKAGE
pkg_dml_legal_transactions
AS
  PROCEDURE spm_update_court_cost(
    p_court_state     IN legal_court_cost.state%TYPE,
    p_tran_code       IN legal_court_cost.transaction_code%TYPE,
    p_legal_court     IN legal_court_cost.court%TYPE default null,
    p_end_date        IN legal_court_cost.end_date%TYPE,
    p_cost_min        IN legal_court_cost.cost_range_min%TYPE,
    p_cost_max        IN legal_court_cost.cost_range_max%TYPE,
    p_bal_min         IN legal_court_cost.bal_range_min%TYPE DEFAULT NULL,
    p_bal_max         IN legal_court_cost.bal_range_max%TYPE DEFAULT NULL);

end pkg_dml_legal_transactions;

내가 하려고 할 때execute절차에서 다음과 같은 오류가 발생합니다.

PLS-00306: wrong number or types of arguments in call to 'SPM_UPDATE_COURT_COST'

다음은 내 execute 문입니다.

execute pkg_dml_legal_transactions.spm_update_court_cost('NJ',1,sysdate,1000,40000);

이제 오류가 의미하는 바를 이해하지만 매개 변수가 null로 기본 설정되어 있으면 건너뛸 수 있지만, 분명히 그렇지 않습니다.이 일을 피할 방법이 있습니까?

PL/SQL에서는 명명된 모수 표기법 또는 위치 표기법을 사용하여 프로시저를 호출할 수 있습니다.일부 매개 변수를 건너뛰려면 명명된 매개 변수 표기법을 사용해야 합니다.

execute pkg_dml_legal_transactions.spm_update_court_cost( p_court_state => 'NJ',
                                                          p_tran_code => 1,
                                                          p_end_date => sysdate,
                                                          p_cost_min => 1000,  
                                                          p_cost_max => 40000 );

일반적으로 절차를 설계할 때는 모든 선택적 매개변수를 끝에 배치하여 호출자가 위치 표기법도 사용할 수 있도록 합니다.

혼합 접근법, 위치 표기법을 사용하여 첫 번째 생략된 모수까지 사용하고 나머지에 대해서는 명명된 표기법을 사용할 수 있습니다.

declare
  procedure do_something(p_foo IN NUMBER
                        ,p_bar IN VARCHAR2 DEFAULT NULL
                        ,p_baz IN VARCHAR2) IS
  begin
    null;
  end;
begin
  do_something(12, p_baz => 'abc');
end;

하지만 저는 저스틴이 제안한 것을 선택할 것입니다.

언급URL : https://stackoverflow.com/questions/18406967/can-i-execute-a-procedure-with-default-null-parameters

반응형