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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как скопировать два столбца из одной таблицы в др. Например, при помощи ХП 
V
    Опции темы
ksili
Дата 7.5.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

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



Есть таблица T_USERS, в ней много полей, в том числе ID_USER (int, первичный ключ), PHONE (char). Есть вторая таблица T_PHONES, пока пустая. Нужно для всех записей из T_USERS создать в T_PHONES записи с такими же ID_USER и PHONE. То есть попросту скопировать два столбца.
Вот такая хранимая процедура не компилится:
Код

begin
  /* Procedure Text */
  for select ID_USER,PHONE from T_USERS order by ID_USER into :id, :ph
  do
    begin
    insert into T_PHONES (ID_USER,PHONE1) values :id, :ph;
    end
  suspend;
end

Ругается на строку с insert'ом. В частности на первое двоеточие. Если его убрать, то ругается на саму переменную id.
В чём ошибка? Я вообще имею мало опыта в использовании хранимых процедур и вообще нигде не встречал примера с использованием insert'а внутри ХП.


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Akella
Дата 7.5.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



1. suspend не нужен

Добавлено через 42 секунды
Код
 insert into T_PHONES (ID_USER, PHONE1) values (:id, :ph);

скобочки забыл

Добавлено через 4 минуты
а не легче что-то вроде такого
Код
insert into t_phones T select u.id, u.phone from t_usert U

PM MAIL   Вверх
ksili
Дата 7.5.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2069
Регистрация: 3.11.2005
Где: Красноярск

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



Спасибо!


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Interbase"
Alex

Обязательно указание:

1. Версию InterBase (Firebird, Yaffil)

2. Способа доступа (ADO, BDE, IBX и т.д.)

  • КАК ПРАВИЛЬНО ОФОРМИТЬ КОД - ЗДЕСЬ
  • КАК ПРАВИЛЬНО УКАЗАТЬ ТЕКСТ ОШИБКИ - ЗДЕСЬ
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • FAQ раздела лежит здесь!

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

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


 




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


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

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