powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Named Cursor Attributes
10 сообщений из 10, страница 1 из 1
Named Cursor Attributes
    #39744345
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
SQL>create table tmp$tab1 as
  2  select level a from dual connect by level <= 3
  3  /

Table created.

SQL>select * from tmp$tab1
  2  /
         A
----------
         1
         2
         3

SQL>declare
  2     cursor c is
  3             select *
  4                     from tmp$tab1;
  5     type t is table of c%rowtype;
  6     r c%rowtype;
  7     v t;
  8     v_isopen boolean;
  9     v_rowcount pls_integer;
10     v_found boolean;
11     v_notfound boolean;
12  begin
13     open c;
14     fetch c into r;
15     v_isopen := sql%isopen;
16     v_rowcount := sql%rowcount;
17     v_found := sql%found;
18     v_notfound := sql%notfound;
19     dbms_output.put_line('sql%isopen='||case when v_isopen is null then 'null' when v_isopen then 'true' else 'false' end);
20     dbms_output.put_line('sql%rowcount='||v_rowcount);
21     dbms_output.put_line('sql%found='||case when v_found is null then 'null' when v_found then 'true' else 'false' end);
22     dbms_output.put_line('sql%notfound='||case when v_notfound is null then 'null' when v_notfound then 'true' else 'false' end);
23  end;
24  /
sql%isopen=false
sql%rowcount=
sql%found=null
sql%notfound=null

PL/SQL procedure successfully completed.

SQL>select * from v$version
  2  /
BANNER                                                                               CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production              0
PL/SQL Release 12.2.0.1.0 - Production                                                    0
CORE    12.2.0.1.0      Production                                                                0
TNS for Linux: Version 12.2.0.1.0 - Production                                            0
NLSRTL Version 12.2.0.1.0 - Production                                                    0

Не мог бы кто-нибудь прокомментировать почему курсор может не открываться, но и ошибки я не вижу?
Возможно, что-то делаю не так?
Мне показалось, это не то поведение, которое описано в доке .
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744351
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROWCOUNT, FOUND, NOTFOUND = NULL до первого FETCH.

SY.
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744353
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYROWCOUNT, FOUND, NOTFOUND = NULL до первого FETCH.

SY.

И доку на которую ты ссылаешься ты причел по диагонали:

%FOUND

named_cursor%FOUND has one of these values:

If the cursor is not open, INVALID_CURSOR

If cursor is open but no fetch was tried, NULL.

If the most recent fetch returned a row, TRUE.

If the most recent fetch did not return a row, FALSE.

SY.
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744355
sharkerr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
v_isopen := sql%isopen;


А почему через sql%, у вас же явный курсор или тут какой-то другой смысл?
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744356
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
Код: plsql
1.
v_isopen := sql%isopen;

Implicit Cursors
в доке.(ц)6.2.1.1 SQL%ISOPEN Attribute: Is the Cursor Open?
SQL%ISOPEN always returns FALSE, because an implicit cursor always closes after its associated statement runs.
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744357
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
declare
     cursor c is
             select *
                   from tmp$tab1;
    type t is table of c%rowtype;
    r t;
    
    --v t;
    
    v_isopen boolean;
    v_rowcount pls_integer;
    v_found boolean;
    v_notfound boolean;
  begin
    open c;
     fetch c bulk collect into r;
     v_isopen := c%isopen;
     v_rowcount := c%rowcount;
     v_found := c%found;
     v_notfound := c%notfound;
     dbms_output.put_line('sql%isopen='||case when v_isopen is null then 'null' when v_isopen then 'true' else 'false' end);
     dbms_output.put_line('sql%rowcount='||v_rowcount);
     dbms_output.put_line('sql%found='||case when v_found is null then 'null' when v_found then 'true' else 'false' end);
     dbms_output.put_line('sql%notfound='||case when v_notfound is null then 'null' when v_notfound then 'true' else 'false' end);
  end;



Код: plsql
1.
2.
3.
4.
sql%isopen=true
sql%rowcount=3
sql%found=false
sql%notfound=true
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744362
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--Eugene--,

У тебя же явный курсор:
Код: plsql
1.
2.
3.
cursor c is
             select *
                   from tmp$tab1;
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744363
Фотография --Eugene--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sharkerrА почему через sql%, у вас же явный курсор или тут какой-то другой смысл?а потому что я ступил. прошу прощения.
вопрос снят
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744376
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock--Eugene--,

У тебя же явный курсор:


Сути не меняет - NULL до первого FETCH.

SY.
...
Рейтинг: 0 / 0
Named Cursor Attributes
    #39744432
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYsaxarock--Eugene--,

У тебя же явный курсор:

Сути не меняет

Наоборот, именно в этом вся суть затруднений ТС.
А fetch у него в тесте, если присмотреться, вполне себе присутствует.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Named Cursor Attributes
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]