" I wonder if I can use Boolean parameter in function "
の宣言はい。 PL/SQLはブール型のデータ型をサポートしています。 myOwnType
はこのようなPL/SQLレコードの場合...
create or replace package p23 as
type myOwnType is record (
attr1 varchar2(10),
attr2 varchar2(30),
attr3 date,
attr4 date,
attr5 boolean
);
function functionname(
param1 varchar2,
param2 varchar2,
param3 date,
param4 date,
param5 boolean)
return myowntype;
end p23;
/
create or replace package body p23 as
function functionname(
param1 varchar2,
param2 varchar2,
param3 date,
param4 date,
param5 boolean)
return myowntype
is
rv myOwnType;
begin
rv.attr1 := param1;
rv.attr2 := param2;
rv.attr3 := param3;
rv.attr4 := param4;
rv.attr5 := param5;
return rv;
end;
end p23;
/
は...全く問題はありません。
SQL> declare
2 myOwnTypeVar p23.myowntype;
3 begin
4 myOwnTypeVar := p23.functionName('something', 'some', SYSDATE, SYSDATE, TRUE);
5 end;
6/
PL/SQL procedure successfully completed.
SQL>
だから何がエラーの原因は? PLS-00382
は割り当ての失敗です。それは代わりにboolean型の文字列の属性で定義された場合は、この割り当ては、そのエラーを投げるでしょう... ...このように、
type myOwnType is record (
attr1 varchar2(10),
attr2 varchar2(30),
attr3 date,
attr4 date,
attr5 varchar2(1)
);
をmyOwnType
の宣言を掲示したがされていない:
rv.attr5 := param5;
でもタイプの脇のOracle SQLがブールをサポートしていないよう
、:
SQL> create or replace type myOwnType as object (
2 attr1 varchar2(10),
3 attr2 varchar2(30),
4 attr3 date,
5 attr4 date,
6 attr5 boolean
7 );
/
Warning: Type created with compilation errors.
SQL> sho err
Errors for TYPE MYOWNTYPE:
LINE/COL ERROR
-------- -----------------------------------------------------------------
6/8 PLS-00530: Illegal type used for object type attribute:
'BOOLEAN'.
SQL>
でこのシナリオfunctionName()
はコンパイルされないので、PLS-00382 expression is of wrong type
を投げることはできませんでした。
戻り値の型は変数の型と一致しますか? – Randy
myOwnTypeVarはどのように宣言されていますか? –
問題はブールパラメータではありません。コードの詳細を表示します。特に、エラーメッセージに記載されている行の周りに表示してください。エラーメッセージは、エラーがどこで発生したかを(コードのどの行に)表示する必要があります。 – mathguy