Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
собсно, сабж
29 янв 09, 12:23    [6752641]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Не всегда.
Все хорошо, когда без фанатизма
29 янв 09, 12:28    [6752703]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
ну, понятно с varchar2 при записи в таблицу - тут лучше перебдеть
29 янв 09, 12:30    [6752721]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Elic
Member

Откуда:
Сообщений: 29980
Всегда - это паранойя
29 янв 09, 12:35    [6752770]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
nxx
Member

Откуда:
Сообщений: 2030
declare

a dual.dummy%type;

b dual.dummy%type;

begin
  
 a := 'Q';
 
 dbms_output.put_line(a);
 
 b := 1;
 
 dbms_output.put_line(b);

end;

какого типа dummy ?

varchar2 ?
29 янв 09, 12:55    [6752933]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
nxx
declare
a dual.dummy%type;
b dual.dummy%type;

begin
  
 a := 'Q';
 dbms_output.put_line(a);
 
 b := 1;
 dbms_output.put_line(b);

end;

какого типа dummy ?

varchar2 ?
А как взаимосвязаны Ваши вопрос и пример?
29 янв 09, 13:04    [6753022]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
SQLap
Member [заблокирован]

Откуда:
Сообщений: 34063
andreymx
собсно, сабж


Нет, иногда еще и с %rowtype )))
29 янв 09, 13:06    [6753046]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Elic
Всегда - это паранойя
"ИМХО" забыли написать?! :-)

P.S. Преподаватели бизнес-колледжа датского города Вайле подготовили
первых в мире специалистов в области информационных технологий,
страдающих синдромом Аспергера – одной из форм аутизма.
29 янв 09, 14:05    [6753517]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Elic
Member

Откуда:
Сообщений: 29980
SQL*Plus
Elic
Всегда - это паранойя
"ИМХО" забыли написать?! :-)
С какой стати?
SQL*Plus
P.S.
Для тебя все болезни едины? :)
29 янв 09, 15:14    [6754060]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Что сказал эндокринолог?
30 янв 09, 11:13    [6757653]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Elic
Member

Откуда:
Сообщений: 29980
SQL*Plus
Что сказал эндокринолог?
У тебя что-то заклинило?
30 янв 09, 11:19    [6757693]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Alexey181
Member

Откуда: default city
Сообщений: 907
Из книги Скотт Урман "Программирование на PL/SQL":использование атрибута %type считается хорошим стилем программирования, так как при этом программы PL/SQL становятся гибче и проще адаптируются к изменениям различных параметров, задаваемых в базе данных.
30 янв 09, 11:22    [6757716]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Это конечно хорошо, но далеко не все переменные используются для чтения / записи полей таблиц...
30 янв 09, 11:28    [6757768]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Elic
SQL*Plus
Что сказал эндокринолог?
У тебя что-то заклинило?
Нет, о вашем здоровье забочусь.
(правда, серьезно)

И опосредованно о здоровье других.
30 янв 09, 11:30    [6757776]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Elic
Member

Откуда:
Сообщений: 29980
Alexey181
так как при этом программы PL/SQL становятся гибче и проще адаптируются к изменениям различных параметров, задаваемых в базе данных.
Только не когда эти переменные надо заполнять из других источников :)
А ещё такие переменные легко сопровождаются, ведь по названию идентификатора так просто узнать тип, чтобы правильно с ним работать
30 янв 09, 11:32    [6757799]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Elic
Member

Откуда:
Сообщений: 29980
SQL*Plus
Elic
SQL*Plus
Что сказал эндокринолог?
У тебя что-то заклинило?
Нет, о вашем здоровье забочусь.
(правда, серьезно)

И опосредованно о здоровье других.
Я понял, твоя ссылка, оказывается, была о тебе
30 янв 09, 11:33    [6757808]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Elic
SQL*Plus
Elic
SQL*Plus
Что сказал эндокринолог?
У тебя что-то заклинило?
Нет, о вашем здоровье забочусь.
(правда, серьезно)

И опосредованно о здоровье других.
Я понял, твоя ссылка, оказывается, была о тебе
Если бы моя ссылка была обо мне, то я бы жил внутри своего собственного мира,
и меня бы не заботило ничто за его пределами, в том числе, здоровье вашей эндокринной системы.
30 янв 09, 11:43    [6757881]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Elic
Member

Откуда:
Сообщений: 29980
SQL*Plus
здоровье вашей эндокринной системы.
Тебе следовало больше думать о том, как уйти не стой своей волны, чтобы больше не испытывать трудностей в общении с окружающими.
30 янв 09, 11:48    [6757915]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Хао, я всё сказал.
30 янв 09, 12:05    [6758069]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
expla
Guest
andreymx
собсно, сабж


Объявление переменной с %type или %rowtype создаёт зависимость. Если такая зависимость не нужна или даже вредна, то и %type использовать не следует.
30 янв 09, 14:53    [6759573]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54383
expla
andreymx
собсно, сабж
Объявление переменной с %type или %rowtype создаёт зависимость. Если такая зависимость не нужна или даже вредна, то и %type использовать не следует.
интересует определение выделенного текста
30 янв 09, 15:23    [6759818]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
expla
Guest
andreymx,

например зависимость определения переменной пакета и как следствие зависимость самого пакета от определения таблицы. Если мы объявляем в пакете v tab%rowtype, то при изменении определения таблицы изменится и пакет даже если его текст не менялся.

Реальную проблему имел, когда форма Oracle Forms была собрана с хранимым пакетом в спецификации которого была объявлена переменная через %rowtype. На базе разработки форма работала, на базе тестирования форма ругалась на спецификацию пакета. Оказалось, что на базах немного отличалась структура таблицы от которой наследовался тип пакетной переменной. Хорошо, форма до клиента не дошла...

Вобще говоря по возможности не следует создавать зависимости объектов, а %rowtype и %type как раз создают такие зависимости.
30 янв 09, 15:41    [6759989]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
expla
Вобще говоря по возможности не следует создавать зависимости объектов, а %rowtype и %type как раз создают такие зависимости.

Странно, из Вашего примера я сделал совсем другой вывод. Это ведь очень хорошо, что форма отказалась работать с той структурой, под которую она не расчитана, а значит откзалась не корректно работать с данными.

Допустим, было у нас кода то поле varhcar2(20), мы его расширили до varchar2(40), а в пакете, ту переменную, куда селектим - не расширили. На тестировании - промухали, отдали клиенту, клиент полгода жил, не превышая длину 20, а потом хлоп, превысил... у клиента отвалились процессы и встал бизнес. Вы му**ки. А тот му**к, который разрабатывал модуль(избегая создавать зависимости), и мог бы быстро среагировать - уволился. Таки порой, зависимости это ОЧЕНЬ хорошо.
30 янв 09, 16:38    [6760388]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Кстати, по поводу раширения поля - вспомнилось.
Была некая форма на Forms 6, в которой выводилось тестовое поле - то ли название товара, то ли клиента - не помню. Все работало, пока не возникла необходимость расширить поле в базе. Расширили, после чего в форме это поле отображаться ПЕРЕСТАЛО. Ладно бы оно усекалось, или выводилось звездочками, либо сообщало об ошибке. Нет, просто молча не выводится, пусто. Помню, потратил пару часов на танцы с бубном, пока не увеличил длину в property Text Item
30 янв 09, 16:44    [6760430]     Ответить | Цитировать Сообщить модератору
 Re: Всегда ли Вы объявляете в pl-sql переменные с %type?  [new]
expla
Guest
Zloxa
А тот му**к, который разрабатывал модуль(избегая создавать зависимости), и мог бы быстро среагировать - уволился. Таки порой, зависимости это ОЧЕНЬ хорошо.


В данном случае вы решаете проблему разработчика за счёт потребительских свойств продукта. Решите, что вам важнее. ИМХО, возможность изменять структуру таблицы без перекомпиляции формы для пользователей системы ценнее, чем карьера нерадивого разработчика. Во всяком случае разработчик один, а пользователей много и они платят разработчику.
30 янв 09, 17:40    [6760746]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить