Хп interbase с 2мя таблицами

CH1PSET1
Дата: 29.05.2012 22:18:40
Здравствуйте добрые люди.

Interbase 7

Тут такая проблемка по не знанию, честно искал, но видимо для моего простого понятия ничего не нашлось..
Вообщем проблема в следующем: Есть 2 таблицы:
1)В первую нужно вставить 2 значений, имя и сколько лет.
2)Во вторую вставить 3 значения.
Написал Хп.
CREATE PROCEDURE INS_VED5 (sname char(50), sage integer, sid_horses integer, sid_matchs integer, sid_marks integer)
AS
DECLARE VARIABLE ID_H INTEGER;
DECLARE VARIABLE ID_R INTEGER;
BEGIN
IF (NOT EXISTS (SELECT * FROM Thorse WHERE Name = :sname  AND Age = :sAge))
THEN
INSERT INTO Thorse(Name, Age) VALUES (:sname, :sAge);
SELECT ID_Horse FROM Thorse WHERE Name=:sName and Age=:sAge INTO :id_H;


IF (NOT EXISTS (SELECT * FROM Treitings WHERE Id_Horses = :sid_horses  AND id_Matchs = :sid_matchs and id_Marks = :sid_marks))
THEN
INSERT INTO Treitings(Id_Horses, id_Matchs, id_Marks) VALUES (:sid_horses, :sid_matchs, :sid_marks);
SELECT ID_Reitings FROM Treitings WHERE Id_Horses = :sid_horses  AND id_Matchs = :sid_matchs and id_Marks = :sid_marks INTO :id_R;



end


Не знаю, как зывать эту хп, чтоб все что мне нужно вставилось в две таблицы, пытался так:

execute procedure ins_ved5 ('nnn', 12, 2, 2, 2)

Но не работает, пишет ошибка в параметрах. Как вот правильно ее вызвать?.

И второй вопрос:

Возможно ли создать хп с 2-мя счетчиками. Точнее сказать Мне нужно, что бы вторая таблица в первом поле была, как счетчик, и второе поле так же, а третее и четвертое я уже сам заполняю вызовом хп.
Или что бы вторая таблица, первое поле счетчик, а второе поле брала значений из первое таблицы (в котором первое поле счетчик). Ну т.е. Поле второй таблицы = первому полю первой таблицы. Например вызываю я хп: Она добавляет в первое поле первой таблицы значение '1' и второе поле второй таблицы тоже брала значение 1 и т.д... Как то так..)) Помогите пожалуйста)
arni
Дата: 29.05.2012 22:24:52
CH1PSET1
Но не работает, пишет ошибка в параметрах. Как вот правильно ее вызвать?.
текст ошибки приводится дословно на языке оригинала, без изъятий и интерпретаций
Симонов Денис
Дата: 29.05.2012 22:28:59
Так нельзя получать значения вставленных ключей. Используй генераторы (последовательности)

INSERT INTO Thorse(Name, Age) VALUES (:sname, :sAge);
SELECT ID_Horse FROM Thorse WHERE Name=:sName and Age=:sAge INTO :id_H;
Гаджимурадов Рустам
Дата: 29.05.2012 22:36:38

Симонов Денис> Так нельзя получать значения вставленных ключей.

RTFM Returning

Posted via ActualForum NNTP Server 1.5

Ivan_Pisarevsky
Дата: 29.05.2012 22:47:00
нет DDL участвующих в запросах таблиц.

Читать про генераторы и их применение для формирование ключевого поля.

вот это:
CH1PSET1
INSERT INTO Thorse(Name, Age) VALUES (:sname, :sAge);
SELECT ID_Horse FROM Thorse WHERE Name=:sName and Age=:sAge INTO :id_H;
стопроцентнтый road to hell.
Симонов Денис
Дата: 29.05.2012 22:47:42
Гаджимурадов Рустам
RTFM Returning

У него Interbase 7
Гаджимурадов Рустам
Дата: 29.05.2012 22:51:43

Симонов Денис> У него Interbase 7

Ну, если там оного нет, то все равно не два запросам с фильтром по неключевым полям,
а предварительное получение значения генератора и вставка с полученным значением.

Posted via ActualForum NNTP Server 1.5

kdv
Дата: 29.05.2012 23:00:34
тогда
http://www.ibase.ru/devinfo/generator.htm
ну и на всякий случай еще
http://www.ibase.ru/devinfo/sp_call.htm