Вы можете использовать следующее для создания такой функции:
Create or Replace Function Get_Fruit( i_id table2.description%type )
Return table2.description%type Is
o_desc table2.description%type;
Begin
for c in ( select description from table2 where id = 'A'||to_char(i_id) )
loop
o_desc := c.description;
end loop;
return o_desc;
End;
, где
- нет необходимости включать обработку исключений, потому что вместо * используется
cursor
1008 * предложение. Использование table_name.col_name%type
для объявления типов данных для аргументов или переменных делает связанный тип данных столбцов динамическим.т. е. они могут зависеть от типа данных связанных столбцов.
зарезервированные ключевые слова, такие как desc
, не могут использоваться в качестве имен столбцов таблиц, если только онивыражается в двойных кавычках ("desc"
)
Для вызова этой функции может быть предпочтительным следующее:
SQL> set serveroutput on
SQL> declare
2 i_id pls_integer := 1;
3 o_fruit varchar2(55);
4 begin
5 o_fruit := get_fruit( i_id );
6 dbms_output.put_line( o_fruit );
7 end;
8 /
Apple
PL/SQL procedure successfully completed