Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создать функцию, определяющее пол продавца 
:(
    Опции темы
Кли
Дата 23.2.2018, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



Здравствуйте!!! Помогите мне подкорректировать код, (написать функцию, определяющую пол продавца. Используя функцию, вывести продавцов - мужчин.) Написал код, но этот код сказали неверный и написали такие замечания: 
Ошибка в самом начале определения функции. Продавец — это запись в таблице SELLERS (одна строка). Эта строка однозначно определяется первичным ключом, т.е. ID. И задача определения пола предполагает выдать ответ ('м'/'ж') по входному параметру — id продавца. У вас же в качестве входного параметра используется строка (SEX IN VARCHAR2), что не понятно совершенно 
Сам код:
Код

CREATE OR REPLACE FUNCTION SEX(SEX IN VARCHAR2)  RETURN IS
FULL_NAME SELLERS.FULL_NAME%TYPE;
SEX SELLERS.FULL_NAME%TYPE;
N NUMBER;
G NUMBER;
CURSOR C1 IS 
SELECT FULL_NAME,SEX FROM SELLERS WHERE SEX=SEX;
BEGIN
SELECT COUNT(*) 
INTO G
FROM SELLERS
WHERE SEX=SEX;
OPEN C1;
N:=1;
WHILE N <= G LOOP
FETCH C1 INTO FULL_NAME, SEX ;
N:=N+1;
DBMS_OUTPUT.PUT_LINE(FULL_NAME);
END LOOP;
CLOSE C1;
END;
/
SHOW ERRORS;

SELECT SEX('М') FROM DUAL;

PM MAIL   Вверх
Кли
Дата 25.2.2018, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



Кто-то есть живой?
PM MAIL   Вверх
Akina
Дата 25.2.2018, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



Процитируйте задание. В приведённом вольном пересказе оно противоречиво.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Кли
Дата 25.2.2018, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



написать функцию, определяющую пол продавца. Используя функцию, вывести продавцов - мужчин
PM MAIL   Вверх
Akina
Дата 26.2.2018, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



Тогда функция будет (схематично)

Код

CREATE FUNCTION get_sex ([id | name])
RETURNS VARCHAR2
AS 
RETURN SELECT sex
       FROM sellers 
       WHERE sellers.[id | name] = [id | name] ;


А запрос на получение соответственно

Код

SELECT *
FROM sellers
WHERE get_sex([id | name]) = 'м';



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Кли
Дата 26.2.2018, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



У меня выползает ошибка:
Error: PLS-00103: Encountered the symbol "[" when expecting one of the following:     <an identifier> <a double-quoted delimited-identifier>    current delete exists prior 
PM MAIL   Вверх
Akina
Дата 26.2.2018, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



А что непонятно в слове "схематично"?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Кли
Дата 26.2.2018, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



понятно,спасибо

Это сообщение отредактировал(а) Кли - 27.2.2018, 12:39
PM MAIL   Вверх
Кли
Дата 28.2.2018, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 20.11.2016

Репутация: нет
Всего: нет



Как из этого запроса сделать функцию?
Код

select r.full_name, 
case 
    when lower(substr(r.full_name, -1)) = 'ч'
       then 'Мужчина'
    when lower(substr(r.full_name, -1)) = 'а'
        then 'Женщина'
    end gender
from sellers r
where 1=1
and lower(substr(r.full_name, -1)) = 'ч';


Это сообщение отредактировал(а) Кли - 28.2.2018, 15:41
PM MAIL   Вверх
Akina
Дата 28.2.2018, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20570
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 453



Ну поскольку  Вы намерены вернуть набор записей , к тому же  состоящих из двух полей - попробуйте спросить у документации, умеет ли Оракл такое...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
LSD
Дата 2.3.2018, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: 18
Всего: 537



Цитата(Akina @  28.2.2018,  23:22 Найти цитируемый пост)
попробуйте спросить у документации, умеет ли Оракл такое... 

Умеет конечно.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.1416 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.