Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как правельно задать курсор в пакете? / 13 сообщений из 13, страница 1 из 1
11.03.2020, 10:38
    #39936205
NovaLiza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
Только начинаю обучатся (ошибки в теле на курсоре выходят)


CREATE OR REPLACE PACKAGE PAC AS
CURSOR Cur1 RETURN STUDENT3%ROWTYPE;
FUNCTION SUM_stud(stipuha NUMBER := 800) RETURN NUMBER;
PROCEDURE SCHETCHIK;
END;

CREATE OR REPLACE PACKAGE BODY PAC AS

PAC_COUNT NUMBER := 0;
FUNCTION SUM_stud(stipuha NUMBER)
RETURN NUMBER IS

BEGIN
SCHETCHIK;
CURSOR Cur1 RETURN STUDENT3%ROWTYPE IS SELECT COUNT(ST_ID) FROM STUDENT3 WHERE STIPEND = stipuha;
END;
END;

PROCEDURE SCHETCHIK IS
BEGIN
PAC_COUNT := PAC_COUNT + 1;
INSERT INTO VYZOV_PAKETOV
VALUES (PAC_COUNT, STIP, STUD_COUNT);
COMMIT;
END;
END;

Ошибки:
9/8 PLS-00103: Encountered the symbol "CUR1" when expecting one of
the following:
:= . ( @ % ;

9/37 PLS-00103: Encountered the symbol "IS" when expecting one of the
following:
. ( , * @ % & - + / at mod remainder rem <an identifier>
<a double-quoted delimited-identifier> <an exponent (**)> as
into || multiset bulk

10/1 PLS-00103: Encountered the symbol "END" when expecting one of the

LINE/COL ERROR
...
Рейтинг: 0 / 0
11.03.2020, 10:50
    #39936211
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
Как правельно...Только начинаю обучатся...ПравИльно писать "обучатЬся".
...
Рейтинг: 0 / 0
11.03.2020, 11:01
    #39936216
NovaLiza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
-2-, Вроде просили найти ошибку в коде, пусть даже пунктуационную=)
...
Рейтинг: 0 / 0
11.03.2020, 11:07
    #39936221
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
NovaLiza
просили
Вас ещё и много?
...
Рейтинг: 0 / 0
11.03.2020, 11:46
    #39936232
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
NovaLiza
Вроде просили найти ошибку в коде, пусть даже пунктуационную
Я оценивал русский язык, потому что незнание pl/sql компилятор уже оценил с указанием места ошибки.
...
Рейтинг: 0 / 0
11.03.2020, 12:02
    #39936234
NovaLiza
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
-2-,
это форум с указанием оценки знаний?
...
Рейтинг: 0 / 0
11.03.2020, 12:06
    #39936235
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
NovaLiza
CURSOR Cur1 RETURN...

Что ты хотела от этой строки?
...
Рейтинг: 0 / 0
11.03.2020, 12:37
    #39936250
mefman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
NovaLiza
-2-,
это форум с указанием оценки знаний?

не совсем, но таки 12561782
...
Рейтинг: 0 / 0
11.03.2020, 13:48
    #39936265
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
NovaLiza,

1) Ваш курсор "возвращает" число count(*), а Вы описываете строку
если б в курсоре было select * from STUDENT3 тогда CURSOR Cur1 RETURN STUDENT3%ROWTYPE;

у Вас число и если уж очень надо так обьявить курсор то примерно так
type t_cc is record(cc number);
CURSOR Cur1 RETURN t_cc;

2) в ф-ции SUM_stud используется SCHETCHIK, ee надо обьявить до SUM_stud

3) в курсоре WHERE STIPEND = stipuha; я б заменил на параметр
CURSOR Cur1(p_stipend number) .... WHERE STIPEND = p_spipend

4) курсор в ф-ции как-то надо использовать, типа
open cur1(stipuha);
fetch cur1 into ...
close cur1;

5) из ф-ции надо что-то вернуть, напр COUNT(ST_ID)

6) еще что-то

.....
stax
...
Рейтинг: 0 / 0
11.03.2020, 14:02
    #39936270
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
Stax
2) в ф-ции SUM_stud используется SCHETCHIK, ee надо обьявить до SUM_stud
Автором приведено объявление до использования.
...
Рейтинг: 0 / 0
11.03.2020, 14:11
    #39936274
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
-2-
Stax
2) в ф-ции SUM_stud используется SCHETCHIK, ee надо обьявить до SUM_stud
Автором приведено объявление до использования.


недоглядел

зациклился на BODY

.....
stax
...
Рейтинг: 0 / 0
11.03.2020, 23:02
    #39936449
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
NovaLiza
Код: 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.
CREATE OR REPLACE PACKAGE PAC AS

	CURSOR Cur1 RETURN STUDENT3%ROWTYPE;

	FUNCTION SUM_stud(stipuha NUMBER := 800) RETURN NUMBER;

	PROCEDURE SCHETCHIK;

END;

CREATE OR REPLACE PACKAGE BODY PAC AS

	PAC_COUNT NUMBER := 0;

	FUNCTION SUM_stud(stipuha NUMBER)
	RETURN NUMBER IS
	
	BEGIN
		SCHETCHIK;
		CURSOR Cur1 RETURN STUDENT3%ROWTYPE IS
                SELECT COUNT(ST_ID)
                  FROM STUDENT3
                 WHERE STIPEND = stipuha;
		END;
	END;
	
	PROCEDURE SCHETCHIK IS 
	BEGIN
		PAC_COUNT := PAC_COUNT + 1;
		INSERT INTO VYZOV_PAKETOV 
		VALUES (PAC_COUNT, STIP, STUD_COUNT);
		COMMIT;
	END;

END;

тег src улучшает восприятие
...
Рейтинг: 0 / 0
12.03.2020, 07:22
    #39936492
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правельно задать курсор в пакете?
andreymx
тег src улучшает восприятие
И называть объекты транслитерацией неэстетично. Нужно вместо
Код: plsql
1.
STUDENT3

использовать английские наименования:
Код: plsql
1.
СТЬЮДЕНТ3
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как правельно задать курсор в пакете? / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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