Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Процедура с входным varchar2 параметром / 12 сообщений из 12, страница 1 из 1
26.11.2016, 10:03
    #39354941
Атикин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
Помогите пожалуйста чайнику!!!
Среда - Oracle XE.
Есть две связанных таблицы. Таб1(фильм, студия, номинация,бюджет), Таб2(номинация, количество, стоимость).
Нужно создать процедуру, которая выводит фильмы для номинации с максимальным призовым фондом, за исключением номинации, заданной в параметре. Как только не пробовап, не получается. При прогоне программы не опознаёт вводимый параметр. А компилируется процедура нормально.
...
Рейтинг: 0 / 0
26.11.2016, 10:21
    #39354943
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
АтикинКак только не пробовапНе верим. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
26.11.2016, 11:15
    #39354955
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
Атикин,
имя параметра часом не совпадает с именем поля таблицы?


ps
если не секрет, покажите как пробовали
.....
stax
...
Рейтинг: 0 / 0
26.11.2016, 12:42
    #39354972
Атикин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
stax..,


Вот таблицы:
create table FILMS
(FNAME varchar2(12),
FKST varchar2(12),
FNOM varchar2(12),
FBUD number(6));

create table NOMIN
(NNOM varchar2(12) NOT NULL,
NKOL number(4) NOT NULL,
NPRICE number(6));

ALTER TABLE NOMIN
ADD (CONSTRAINT nomin_pk_nnom PRIMARY KEY (nnom));

ALTER TABLE FILMS
ADD (CONSTRAINT films_pk_fname PRIMARY KEY (fname),
CONSTRAINT films_fk_fnom FOREIGN KEY (fnom)
REFERENCES nomin(nnom));

Попытки в файле
...
Рейтинг: 0 / 0
26.11.2016, 12:44
    #39354975
Атикин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
Elic, вот таблицы:
create table FILMS
(FNAME varchar2(12),
FKST varchar2(12),
FNOM varchar2(12),
FBUD number(6));

create table NOMIN
(NNOM varchar2(12) NOT NULL,
NKOL number(4) NOT NULL,
NPRICE number(6));

ALTER TABLE NOMIN
ADD (CONSTRAINT nomin_pk_nnom PRIMARY KEY (nnom));

ALTER TABLE FILMS
ADD (CONSTRAINT films_pk_fname PRIMARY KEY (fname),
CONSTRAINT films_fk_fnom FOREIGN KEY (fnom)
REFERENCES nomin(nnom));
А попытки в файле
...
Рейтинг: 0 / 0
26.11.2016, 15:14
    #39355028
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
Вы одно скажите - нафига тут динамический SQL? Чтобы показать, мол, я его умею? Ну тогда выводите запрос для отладки перед его выполнением.
...
Рейтинг: 0 / 0
26.11.2016, 15:31
    #39355035
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
АтикинПомогите пожалуйста чайнику!!!
Среда - Oracle XE.
Есть две связанных таблицы. Таб1(фильм, студия, номинация,бюджет), Таб2(номинация, количество, стоимость).
Нужно создать процедуру, которая выводит фильмы для номинации с максимальным призовым фондом, за исключением номинации, заданной в параметре. Как только не пробовап, не получается. При прогоне программы не опознаёт вводимый параметр. А компилируется процедура нормально.

1) где тестовые данные? (набор фильмов и номинаций)
2) "создать процедуру, которая выводит " куда/как выводит?
3) что есть "максимальный призовой фонд"
4) "за исключением номинации", исключение для поиска мах, или для вывода?



зы
зачем Вам execute immediate?

.....
stax
...
Рейтинг: 0 / 0
26.11.2016, 15:49
    #39355043
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
Атикин,

мож натолкнет на решение
Код: 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.
SQL> select * from FILMS;

FNAME        FKST         FNOM               FBUD
------------ ------------ ------------ ----------
Операция Ы   Союз         К                   100
Белое солнце Союз         Б                   200
Золушка      Союз         С                    50
Салогонщики  Союз         К                   100
Вий          Союз         Ж                   100

SQL> select * from NOMIN;

NNOM               NKOL     NPRICE
------------ ---------- ----------
Б                     1       9000
К                     2       1000
С                     1       2000
Ж                     1       1500

SQL> create or replace procedure TUPIK (NAG in varchar2) is
  2   begin
  3    for r in (
  4         select FNAME from FILMS f
  5         where f.FNOM in (select nnom
  6               from (select nnom,rank() over (order by (NKOL*NPRICE) DESC) rn
  7                     from nomin n
  8                     where nnom<>NAG)
  9               where rn=1)) loop
 10       dbms_output.put_line(r.fname);
 11    end loop;
 12  end TUPIK;
 13  /

Procedure created.

SQL> exec TUPIK('K');
Белое солнце

PL/SQL procedure successfully completed.

SQL> exec TUPIK('Б');
Операция Ы
Золушка
Салогонщики

PL/SQL procedure successfully completed.

SQL>




.....
stax
...
Рейтинг: 0 / 0
26.11.2016, 17:38
    #39355081
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
stax..,

Тут непонятно кто курица а кто яйцо. Т.e. нужно ли найти в таблице фильм у котоого max $ номинация из таблицы номинаций или для номинации с max $ в таблице номинаций найти фильм в таблице фильмов? Твое решение для второго случая. Для первого что-то типа:

Код: plsql
1.
2.
3.
4.
5.
SELECT  MAX(FNAME) KEEP(DENSE_RANK LAST ORDER BY NKOL*NPRICE) FNAME
  FROM  FILMS F,
        NOMIN N
  WHERE NNOM != NAG
    AND FNOM = NNOM;



SY.
...
Рейтинг: 0 / 0
26.11.2016, 18:29
    #39355110
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
SYstax..,

Тут непонятно кто курица а кто яйцо. Т.e. нужно ли найти в таблице фильм у котоого max $ номинация из таблицы номинаций или для номинации с max $ в таблице номинаций найти фильм в таблице фильмов? Твое решение для второго случая. Для первого что-то типа:

Код: plsql
1.
2.
3.
4.
5.
SELECT  MAX(FNAME) KEEP(DENSE_RANK LAST ORDER BY NKOL*NPRICE) FNAME
  FROM  FILMS F,
        NOMIN N
  WHERE NNOM != NAG
    AND FNOM = NNOM;



SY.

я ж задал вопросы 4)

имхо last не очень подходит, rank луче, напр если несколько фильмов попадет под критерий

.....
stax
...
Рейтинг: 0 / 0
26.11.2016, 18:30
    #39355111
stax..
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
SYstax..,

Тут непонятно кто курица а кто яйцо. Т.e. нужно ли найти в таблице фильм у котоого max $ номинация из таблицы номинаций или для номинации с max $ в таблице номинаций найти фильм в таблице фильмов? Твое решение для второго случая. Для первого что-то типа:

Код: plsql
1.
2.
3.
4.
5.
SELECT  MAX(FNAME) KEEP(DENSE_RANK LAST ORDER BY NKOL*NPRICE) FNAME
  FROM  FILMS F,
        NOMIN N
  WHERE NNOM != NAG
    AND FNOM = NNOM;



SY.

я ж задал вопросы 4)

имхо last не очень подходит, rank луче, напр если несколько фильмов попадет под критерий

.....
stax
...
Рейтинг: 0 / 0
26.11.2016, 19:00
    #39355120
Атикин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Процедура с входным varchar2 параметром
stax..,
СПАСИБО!!!
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Процедура с входным varchar2 параметром / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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