जैसा कि आप केवल फ़ंक्शन का परीक्षण करना चाहते हैं, आप इसे कॉल करने के लिए एक अनाम पीएल/एसक्यूएल ब्लॉक का उपयोग कर सकते हैं और इसके परिणाम को एक मिलान पंक्ति प्रकार चर के लिए असाइन कर सकते हैं, जैसे:
declare
l_row mytable%rowtype;
begin
-- call the function and assign the result to a variable
l_row := mypackage.myfunction(1, 2, 3);
-- do something with the result
dbms_output.put_line(l_row.some_columns);
end;
/
एक निर्मित तालिका और विस्तारित फ़ंक्शन के साथ त्वरित डेमो:
create table mytable (col1, col2, col3, col4, col5) as
select 1, 2, 3, 'test', sysdate from dual;
create or replace package mypackage as
function myfunction (param1 number, param2 number, param3 number)
return mytable%rowtype;
end mypackage;
/
create or replace package body mypackage as
function myfunction (param1 number, param2 number, param3 number)
return mytable%rowtype is
l_row mytable%rowtype;
begin
select * into l_row
from mytable
where col1 = param1
and col2 = param2
and col3 = param3;
return l_row;
end myfunction;
end mypackage;
/
SQL से कॉल करने पर वही त्रुटि मिलती है जो आप अभी देखते हैं:
select mypackage.myfunction(1, 2, 3) from dual;
SQL Error: ORA-06553: PLS-801: internal error [55018]
लेकिन एक ब्लॉक के साथ (आउटपुट सक्षम के साथ SQL डेवलपर के माध्यम से यहां चलाएं):
set serveroutput on
declare
l_row mytable%rowtype;
begin
-- call the function and assign the result to a variable
l_row := mypackage.myfunction(1, 2, 3);
-- do something with the result
dbms_output.put_line(l_row.col4 ||':'|| l_row.col5);
end;
/
test:2019-04-29
PL/SQL procedure successfully completed.