Могу ли я узнать, почему мой запрос возвращает строку, но ни одна строка не отображается? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть таблица с именем 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> 
...