У меня есть таблица с именем region:
Name Null? Type
----------------------------------------------------- -------- ------------------------------------
R_REGIONKEY NOT NULL NUMBER(12)
R_NAME NOT NULL CHAR(25)
R_COMMENT NOT NULL VARCHAR2(152)
, поэтому ключ региона является первичным ключом, а имя похоже на Америку, Европу, Азию и т. Д. c ..
Я создал хранимую функцию для отображения ключа и имени региона в одной строке и столбце, и она сработала, она сообщает, что выбрана 1 строка, однако я не вижу ничего, кроме атрибута «LISTNATION ('ASIA')» в двойной таблице, почему это?
вот мой код для хранимой функции:
create or replace function LISTNATION(regionName IN varchar2)
return varchar2
IS
result varchar2(500) := '';
begin
for region IN ( select r_regionkey
from region
where r_name = regionName)
loop
result := result || region.r_regionkey || ' ' || regionName || ' ';
end loop;
return result;
end LISTNATION;
/
И это результат после того, как я вызвал функцию:
SQL> select LISTNATION('ASIA') from dual;
LISTNATION('ASIA')
----------------------------------------------------------------------------------------------------
1 row selected.
SQL>
Как ни странно, если бы я использовал r_name в качестве аргумента, он отображается правильно:
SQL> select LISTNATION(r_name) from region;
LISTNATION(R_NAME)
----------------------------------------------------------------------------------------------------
0 AFRICA
1 AMERICA
2 ASIA
3 EUROPE
4 MIDDLE EAST
5 rows selected.
SQL>