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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос для Oracle. Создание запроса...ж)) 
:(
    Опции темы
Romski
Дата 21.6.2004, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 7.5.2003
Где: Москва

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



Приветы. Хотел спросить помощи. Существует таблица A, в которой имеются два поля, говоря точно, это barcode и article. Уникальным является barcode. Предположим, что существует такая строка:

article | barcode |
--------------------------------- |
11111 | 111111111111 |
22222 | 2222222222222 |

Заметьте, что в первой строке баркод является 12 значным. И на самом деле, таких 12 значных баркодов в реальной таблице очень много, руками переделывать можно устать...ж)) Быть может кто-то поможет мне и предоставит скрипт, который будет отыскивать 12 значные баркоды и добавлять ещё одну строку с таким же артиклем, но уже 13 значным баркодом. Как то не грамотно всё описал, суть в том, что после запуска скрипта должно будет быть следующее:


article | barcode |
--------------------------------- |
11111 | 0111111111111 |
11111 | 111111111111 |
22222 | 2222222222222 |

т.е не изменять текущий баркод, а добавлять строку с тем же артикулом и почти таким же баркодом, к которому впереди будет добавляться ноль, до 13 знаков.

Заранее благодарен.
PM MAIL ICQ   Вверх
Marriage
Дата 21.6.2004, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Долго не думал ...
Я бы сделал ( на Дельфе ) следущим образом :

Ods - OracleDataSet : Select * from A
OracleQuery - insert into A( article, barcode ) values (:article, : barcode );





Ods.Open;
Ods.First;

While not Ods.EOF do
Begin

str:=Ods.FieldByName('Barcode').AsString;

If length(str) = 12 then
Begin
str:='0' + str;
OracleQuery.SetVariable('Barcode',str);
OracleQuery.SetVariable('Article',Ods.FieldByName('article').AsString);
OracleQuery.Execute;
End;

ODS.NEXT;

End;

Может ошибки и есть, но смысл я думаю понятен ...

Это сообщение отредактировал(а) Marriage - 21.6.2004, 21:42


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
Kesh
Дата 21.6.2004, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



А может как-нить так.... Могут быть ошибки... На Oracle не проверял...

SQL
INSERT INTO style='color:orange'><TABLE> (ARTICLE,BARCODE) VALUES (SELECT ARTICLE, '0'||BARCODE FROM style='color:orange'><TABLE> WHERE LENGTH(BARCODE)=12);



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Marriage
Дата 21.6.2004, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2kesh
Красиво замутил ... notify.gif


--------------------
Praemonitus, praemunitus
PM MAIL ICQ   Вверх
<Spawn>
Дата 22.6.2004, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

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



Примерно так(могут быть ошибки так как пишу по памяти)
Код
declare
 cursor c_barcodes is
   (SELECT article, barcode
      FROM A
     WHERE Length(rtrim(ltrim(barcode))) = 12);
begin
 for v_rec in c_barcodes loop
   INSERT INTO A (article, barcode)
     VALUES (v_rec.article, '0'||v_rec.barcode);
 end loop;
 commit;
end;


П.С. Только как ты такое хочешь сделать, если у тебя уникальный article?

Это сообщение отредактировал(а) <Spawn> - 22.6.2004, 12:31


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Romski
Дата 22.6.2004, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 7.5.2003
Где: Москва

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



Так у меня не article уникальный, а barcobe. Хм, всем спасибо, думаю, что какой нить из вариантов сработат...ж))
PM MAIL ICQ   Вверх
Kesh
Дата 22.6.2004, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

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



Давай, напиши уж, что получилось...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

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

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

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

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

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


 




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


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

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