Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Named Cursor Attributes / 10 сообщений из 10, страница 1 из 1
07.12.2018, 15:24
    #39744345
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
Код: 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
07.12.2018, 15:30
    #39744351
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
ROWCOUNT, FOUND, NOTFOUND = NULL до первого FETCH.

SY.
...
Рейтинг: 0 / 0
07.12.2018, 15:32
    #39744353
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
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
07.12.2018, 15:37
    #39744355
sharkerr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
Код: plsql
1.
v_isopen := sql%isopen;


А почему через sql%, у вас же явный курсор или тут какой-то другой смысл?
...
Рейтинг: 0 / 0
07.12.2018, 15:38
    #39744356
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
автор
Код: 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
07.12.2018, 15:39
    #39744357
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
--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
07.12.2018, 15:40
    #39744362
saxarock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Named Cursor Attributes
--Eugene--,

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

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


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

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

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

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

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


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