Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
 Треба помощь. Код внутри.  [new]
useror
Member

Откуда:
Сообщений: 7
Здравствуйте, изучаю SQL. В книге дан пример кода спец. для Oracle:

CREATE PROCEDURE MailingListCount
(ListCount OUT NUMBER)
IS
BEGIN
SELECT *
FROM Customers
WHERE NOT cust_email IS NULL;
ListCount := SQL%ROWCOUNT;
END;

Пробую в 10g, выдает ошибку:
ERROR at line 5: PLS-00428: an INTO clause is expected in this SELECT statement3. IS
4. BEGIN
5. SELECT *
6. FROM Customers
7. WHERE NOT cust_email IS NULL;

Просто Select выполняется без проблем. И еще вопрос: в предложении WHERE имеет ли значение в каком порядке стоят слова IS NOT NULL ?
Спасибо.
7 июл 08, 07:30    [5893898]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
useror
Здравствуйте, изучаю SQL. В книге дан пример кода спец. для Oracle:
Выкинь такую книжку
useror
an INTO clause is expected in this SELECT statement
Сложности с английским? Есть онлайн переводчики
useror
И еще вопрос: в предложении WHERE имеет ли значение в каком порядке стоят слова IS NOT NULL ?
В каком-то смысле имеет, т.е. не все комбинации из 6 возможных разрешены
7 июл 08, 07:38    [5893902]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
useror
Member

Откуда:
Сообщений: 7
Книга "Освой самостоятельно язык запросов SQL. 10 минут на урок" Бен Форта. Изд. Вильямс. 2005
скачивал с натахаус
2/3 прочитал, примеры работают без затруднений. Да и написана понятно для меня. Жалко если г-ном окажется.
Английский конечно не супер но и особых сложностей не испытываю, INTO пробовал подставлять, требует FROM.
Просто хотелось бы чтоб знающий человек опытным взглядом определил где тут ошибка и как должно быть.
Спасибо
7 июл 08, 08:05    [5893917]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Для ознакомления с точным синтаксисом существует документация (свободно скачивается)
Для работы с Oracle есть смысл знакомиться с книгами, ориентированными именно на Oracle

PS. IMHO Всевозможные серии "для чайников", "для дебилов", "за 21 день", "за 10 мин" и т.д. можно читать/проглядывать только тогда, когда они уже тебе не нужны. Иначе забьешь себе голову всяким мусором, который потом будет нелегко вытряхнуть
7 июл 08, 08:13    [5893923]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
useror
Member

Откуда:
Сообщений: 7
млять, ну если я тока начинаю изучать SQL , че мне терь SQL/Oracle для профессионалов Тома Кайта читать? конкретный вопрос поставлен, будьте так добры дать конкретный ответ по коду если Вас не затруднит.
Спасибо.
з.ы. да и где щас 100 пудовую книгу взять?
7 июл 08, 08:22    [5893946]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Elic
Member

Откуда:
Сообщений: 29991
useror
где тут ошибка
Не столько в синтаксисе, сколько в генах
useror
как должно быть.
Должно выкинуть подобное г. на помойку
7 июл 08, 08:56    [5894009]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
useror
Member

Откуда:
Сообщений: 7
2Elic
сам то помнишь как начинал?
7 июл 08, 09:11    [5894035]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
FCODE
Guest
CREATE PROCEDURE MailingListCount (ListCount OUT NUMBER)
IS
BEGIN

SELECT count(id) into ListCount
FROM Customers
WHERE cust_email IS NOT NULL;


exception
when other when
ListCount :=0;

END;
7 июл 08, 09:25    [5894068]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
useror
Member

Откуда:
Сообщений: 7
FCODE
CREATE PROCEDURE MailingListCount (ListCount OUT NUMBER)
IS
BEGIN

SELECT count(id) into ListCount
FROM Customers
WHERE cust_email IS NOT NULL;


exception
when other when
ListCount :=0;

END;

Спасибо большое. Правдо немного переработал.
7 июл 08, 09:34    [5894104]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Elic
Member

Откуда:
Сообщений: 29991
FCODE
 exception 
  when other when 
    ListCount :=0;
Ещё один горе-"учитель"
7 июл 08, 09:36    [5894106]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Улыбающийся китайский смайлик
Guest
Elic
FCODE
 exception 
  when other when 
    ListCount :=0;
Ещё один горе-"учитель"


Учебники пишут троечники! :-)
7 июл 08, 09:39    [5894125]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Elic
Member

Откуда:
Сообщений: 29991
Улыбающийся китайский смайлик
Elic
FCODE
 exception 
  when other when 
    ListCount :=0;
Ещё один горе-"учитель"
Учебники пишут троечники! :-)
И опять-таки проблема "Не столько в синтаксисе, сколько в генах "
7 июл 08, 09:46    [5894149]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Elic
Member

Откуда:
Сообщений: 29991
useror
а трын.еть то мы все мастера...
Не мы, а ты. И это вместо того, чтобы уже давно сделать правильный выбор между бредом сивой кобылы за серебряник и советами уважаемых форумчан за бесплатно
7 июл 08, 09:51    [5894174]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
useror
Member

Откуда:
Сообщений: 7
Извиняюсь если кого обидел, но если на вопрос уважаемые форумчане дают ответ выкинь книгу и все это г-но, вместо помощи в прямом смысле слова, то это полный п.
7 июл 08, 10:22    [5894352]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
pravednik
Member

Откуда: Jacksonville, FL
Сообщений: 16268
useror
Извиняюсь если кого обидел, но если на вопрос уважаемые форумчане дают ответ выкинь книгу и все это г-но, вместо помощи в прямом смысле слова, то это полный п.

ну если книга дает пример кода спец. для Oracle котрый неправильный как минимум синтаксически... Зачем Вам такая книга ???... какой от нее толк ?
7 июл 08, 10:51    [5894596]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
pravednik
useror
Извиняюсь если кого обидел, но если на вопрос уважаемые форумчане дают ответ выкинь книгу и все это г-но, вместо помощи в прямом смысле слова, то это полный п.

ну если книга дает пример кода спец. для Oracle котрый неправильный как минимум синтаксически... Зачем Вам такая книга ???... какой от нее толк ?

+2

Автору: чего ты ерепенисся, ну разжуют тебе в чем ошибка, и что? Пойдешь дальше
читать эту говно-книгу, в надежде, что так и будут тебе на этом форуме сопли вытирать?
Чти докуметацию или обзаведись (на худой конец) вменяемым пособием.
7 июл 08, 11:05    [5894717]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
useror
вместо помощи в прямом смысле слова

Ответ на Ваш вопрос был дан в Вашем же посте
INTO clause is expected in this SELECT statement

Вольный перевод: для данного оператора SELECT ожидается предложение INTO
7 июл 08, 11:14    [5894796]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
kinky cat
Member

Откуда: с дивана23
Сообщений: 1238
если хочешь на русском, то есть для 7ки Справочное руководство по SQL
для начинания не самый плохой вариант
7 июл 08, 11:17    [5894819]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
ALocky
Member

Откуда: Понаехал из Подмосковья
Сообщений: 747
Вот мои 5 копеек для useror:
Сей форум очень хорош для решения проблем. Однако надо научиться фильтровать некоторые ответы и не реагировать на них во избежание бессмысленного трепа. И еще...
- И умоляю Вас. Не задавайте глупых вопросов в понедельник утром.
- Так ведь других нет!
- Вот никаких и не задавайте.
(с) Почти "Собачье сердце"

З.Ы. А книжку таки выкиньте.
7 июл 08, 11:23    [5894891]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18486
Из ответов, как мне кажется, надо было отфильтровывать ответ только от FCODE
Хотя вопрошавший может отфильтровать все кроме ответа FCODE, все зависит от понимания своих целей
Всю необходимую информацию дали, остальное за автором
7 июл 08, 11:28    [5894964]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
workhard
Member

Откуда: Москва
Сообщений: 6
Код внутри Вильямс!
- в одной книге по vb они даже не удосужились править ошибки после сканирования кода.
Позор Вильямс!
Увольнение редактору!
7 июл 08, 12:11    [5895414]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Vladimir Kuznetsov
Member

Откуда:
Сообщений: 8
Не знаю, что имел в виду автор книги, но если требовалось посчитать кол-во клиентов не имеющих email адресов, то я бы написал вот так:

CREATE PROCEDURE MailingListCount
(ListCount OUT NUMBER)
IS
v_count NUMBER;
BEGIN
SELECT count(*)
INTO v_count
FROM Customers
WHERE cust_email IS NOT NULL;
ListCount := v_count;
END;
7 июл 08, 17:15    [5898246]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
Vladimir Kuznetsov
Не знаю, что имел в виду автор книги, но если требовалось посчитать кол-во клиентов не имеющих email адресов, то я бы написал вот так:

CREATE PROCEDURE MailingListCount
(ListCount OUT NUMBER)
IS
v_count NUMBER;
BEGIN
SELECT count(*)
INTO v_count
FROM Customers
WHERE cust_email IS NOT NULL;
ListCount := v_count;
END;

ну, как минимум, переменная нафиг не нужна
7 июл 08, 17:26    [5898367]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Gareev Dmitriy
Member

Откуда:
Сообщений: 32
По поводу exception - он тут (при использовании count) нифига не нужен. Вот, например, sum при отсутствии записей даст ошибку, а count всегда вернёт строку. При отсутствии содержащую 0.

По поводу примера - автор хотел показать команду sql%rowcount. И никакие into тут не помогут, так как предполагается, что запрос выдаст список строк. Именно в процедуре даже не знаю, как её показать в селекте. Лучше её показывать в sqlplus. А вот в update в процедуре его можно вставить очень красиво, чтобы, например, посчитать сколько строк фактически изменилось.

Кстати - автор вполне возможно пропустил строку insert into, тогда select будет работать и мы сможем понять сколько строк вставилось...
7 июл 08, 17:55    [5898607]     Ответить | Цитировать Сообщить модератору
 Re: Треба помощь. Код внутри.  [new]
Madness
Member

Откуда: Москва
Сообщений: 648
Gareev Dmitriy
Вот, например, sum при отсутствии записей даст ошибку

да ну?
7 июл 08, 18:01    [5898678]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Oracle Ответить