powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / можно ли сравнить переменную с данными из таблицы
25 сообщений из 29, страница 1 из 2
можно ли сравнить переменную с данными из таблицы
    #39502287
Akezhan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как сравнить данные из таблицы с переменной
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502289
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akezhanкак сравнить данные из таблицы с переменной
Привет, а как ты их хочешь сравнить? напиши пожалуйста пример или что-нибудь что бы понять как именно ты хочешьих сравнивать )))
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502295
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akezhan,

Что-то типо того ))) ? :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare 
  peremen integer;
  zn integer;
begin
  peremen:=1;
  select t.id
         into zn
      from ttable t
      where t.id=peremen; --Вот тут сравнение
  DBMS_OUTPUT.PUT_LINE(zn);
end;
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502296
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akezhan,

Тебе уже ответил Stax в предыдущей твоей теме 20709835 .

Не плоди десяток тем по одному вопросу. И почитай доку . Concepts, SQL reference и PL/SQL reference в первую очередь.
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502297
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы хоть соседние темы читали, прежде чем советы выдавать - пример использования агрегатной функции уже был.
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502298
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Говнокод, напрашивающийся на NO_DATA_FOUND. Не советуй больше подобного.
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502299
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envRMagistr2015,

Говнокод, напрашивающийся на NO_DATA_FOUND. Не советуй больше подобного.
Понял, спасибо
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502300
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку

А также на TOO_MANY_ROWS, TYPE_MISMATCH и прочая, прочая, прочая....
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502302
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

тогда так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare 
  peremen integer;
  zn integer;
begin
  peremen:=1;
  select t.id
         into zn
      from ttable t
      where t.id=peremen; --Вот тут сравнение
  DBMS_OUTPUT.PUT_LINE(zn);
  
  exception when OTHERS then
      DBMS_OUTPUT.PUT_LINE('error');
end;
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502309
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Зачем писать кусок кода, практически гарантированно дающий ошибку при малейшем шаге в сторону?
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502311
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

Пошёл период "закрывающих хвосты". Сейчас будет всплеск тем "как получить 2, складывая 1 и 1, без малейших попыток прочитать учебник по арифметике?"
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502314
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
envRMagistr2015,

Зачем писать кусок кода, практически гарантированно дающий ошибку при малейшем шаге в сторону?

(заинтересованно) А какие шаги ты подразумеваешь например?
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502343
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

Все перечисленные выше.

Протестируй свой код на сценариях:

- тип данных поля в таблице не совпадает с типом сравниваемой переменной
- в таблице более одного поля с таким значением
- в таблице нет полей с таким значением
- переменная содержит NULL

И задумайся, можно ли по твоему коду понять, что пошло не так.
Я уж молчу о том, что в постановке ТС задача излишне абстрактная по своей сути и предполагает разные реализации для разных целей. От курсора по таблице с явным приведением типов и обработкой возможных исключений до банального select count(*) into from t where decode(t.field, l_variable, 0) = 0, в зависимости от того, что на самом деле надо по постановке задачи.
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502362
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015, env,

Да начнется срач..
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502364
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,

А надо? В этой теме он себя вполне прилично ведёт. Даже помочь пытался, как сумел.
Другой вопрос, качество этой помощи...
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502386
saxarock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

нормально написал парень

Код: plsql
1.
2.
exception when OTHERS then
      DBMS_OUTPUT.PUT_LINE('error');

люблю такие штуки, почему упало хз, становится понятно зачем ты в конторе нужен.
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502469
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxarock,
Ничего скучнее чем срач не видел.
saxarock
Код: plsql
1.
2.
exception when OTHERS then
      DBMS_OUTPUT.PUT_LINE('error');

люблю такие штуки...
ТС действительно несовсем конкретно поставил задачу, поэтому я и задал вопрос:
RMagistr2015Что-то типо того ))) ? :


env,
порылся в exception, вот что получилось ))) :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare 
  peremen integer:=1+null;
  zn integer:=0;
begin
  select t.client_id
         into zn
      from ttable t
      where t.id=peremen;
  DBMS_OUTPUT.PUT_LINE(zn);
  exception 
    when TOO_MANY_ROWS then
      DBMS_OUTPUT.PUT_LINE('return more than one value'); --select вернул больше одного значения
    when no_data_found then
      DBMS_OUTPUT.PUT_LINE('No such values'); --select ничего не вывел, сюда же попало условие - если переменная содержит NULL
    when INVALID_NUMBER then
      DBMS_OUTPUT.PUT_LINE('INVALID NUMBER'); --переменная не число
end;
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502482
Фотография Vadim Lejnin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015saxarock,
Ничего скучнее чем срач не видел.
saxarock
Код: plsql
1.
2.
exception when OTHERS then
      DBMS_OUTPUT.PUT_LINE('error');

люблю такие штуки...
ТС действительно несовсем конкретно поставил задачу, поэтому я и задал вопрос:
RMagistr2015Что-то типо того ))) ? :


env,
порылся в exception, вот что получилось ))) :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare 
  peremen integer:=1+null;
  zn integer:=0;
begin
  select t.client_id
         into zn
      from ttable t
      where t.id=peremen;
  DBMS_OUTPUT.PUT_LINE(zn);
  exception 
    when TOO_MANY_ROWS then
      DBMS_OUTPUT.PUT_LINE('return more than one value'); --select вернул больше одного значения
    when no_data_found then
      DBMS_OUTPUT.PUT_LINE('No such values'); --select ничего не вывел, сюда же попало условие - если переменная содержит NULL
    when INVALID_NUMBER then
      DBMS_OUTPUT.PUT_LINE('INVALID NUMBER'); --переменная не число
end;



Если Вы никак не обрабатываете exception, проще вывести стандартное сообщение
Разве что хочется обругать по русски криворукого пользователя.

Но, в любом случае, все неизвестные exception, нужно выводить во вменяемом виде:

Дока Example 10-11, "Displaying SQLCODE and SQLERRM"
Example 13-6, "Using SQLCODE and SQLERRM"

Код: plsql
1.
2.
3.
4.
5.
...
      WHEN OTHERS THEN
         v_code := SQLCODE;
         v_errm := SUBSTR(SQLERRM, 1 , 64);
         DBMS_OUTPUT.PUT_LINE('Error code ' || v_code || ': ' || v_errm);
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502519
Фотография mRdUKE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim LejninНо, в любом случае, все неизвестные exception, нужно выводить во вменяемом виде:
...
v_code := SQLCODE;
v_errm := SUBSTR(SQLERRM, 1 , 64);
...или,
Код: plsql
1.
... sys.dbms_utility.format_error_stack||sys.dbms_utility.format_error_backtrace ...
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502528
Азагаш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема, как я понимаю, не в недостаточной обработке ошибок, а в их излишней генерации. вообще, есть вопрос по коду, зачем выбирать значение t.id, да еще и складывать это значение в переменную, если мы и так знаем, что это peremen (ну или все упадет)?
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502537
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так вот, благодаря "добродетели", вопрос по незнанию SQL наибанальнейшего select-where, перерос в обсуждение как лучше скрыть ошибку PL/SQL. Сразу в null или сначала записать в dbms_output.
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502539
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Азагашпроблема, как я понимаю, не в недостаточной обработке ошибок, а в их излишней генерации. вообще, есть вопрос по коду, зачем выбирать значение t.id, да еще и складывать это значение в переменную, если мы и так знаем, что это peremen (ну или все упадет)?

Это для примера - Что-то типо того )))
А так возможны любые варианты появления там значения, ТС не уточнил )))
Это я так понял абстрактная задача, где не рассматриваются способы появления значения в переменной, а рассматривается сравнение со значениями в таблице в колонке...
(заинтересованно) А что вы имеете ввиду говоря об ошибках под - а в их излишней генерации...? )))
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502541
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RMagistr2015,

А что вы имеете ввиду говоря об ошибках под фразой - а в их излишней генерации...? )))
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502542
RMagistr2015
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Азагаш ))))

RMagistr2015RMagistr2015,

А что вы имеете ввиду говоря об ошибках под фразой - а в их излишней генерации...? )))

Этот вопрос тебе )))
...
Рейтинг: 0 / 0
можно ли сравнить переменную с данными из таблицы
    #39502546
Lary Denis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оракловая ветка так изголодалась по интересным темам, что люди готовы браться за любую задачу, даже к которой нет ни требований, ни нормального описания.

И что самое грустно, советы дает Rясельник2099.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / можно ли сравнить переменную с данными из таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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