반응형
기본 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
반응형
'programing' 카테고리의 다른 글
문자열을 인코딩하면 DECoding 오류(UnicodeDecodeError)가 발생하는 이유는 무엇입니까? (0) | 2023.07.25 |
---|---|
MySQL 및 주석 (0) | 2023.07.25 |
jQuery를 사용하여 표 행을 반복하고 셀 값을 가져오는 방법 (0) | 2023.07.25 |
SQL 또는 PL/SQL을 사용하여 첫 번째 중복 행만 업데이트하는 Oracle의 UPDATE 문 (0) | 2023.07.25 |
가져오기 오류: 이름이 6인 모듈이 없습니다. (0) | 2023.07.25 |