Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
ВнизStrored Procedure - где ошибка Найти похожие ветки
← →
Алексей Пеньков (2002-09-11 14:00) [0]Здравствуйте.
Написал процедуру
////// Begin clipboard //////
CREATE PROCEDURE GetPrice (IN aData date, IN aWare ZSTRING(10), IN aPCode INT(2), OUT aPrice FLOAT);
BEGIN
SET aPrice =0;
SET aPrice =
(SELECT price FROM warehist_dbt
WHERE (ware = aWare) and (KodPrice = aPCode) and
(NdprtClnt = 0) and (KodClnt = 0) and "date" =
(select min("date") from warehist_dbt where (ware = aWare) and (KodPrice = aPCode) and (NdprtClnt = 0) and (KodClnt = 0) and ("date" > adata)
))
);
IF (aPrice = 0) then
SET aPrice = (SELECT price FROM warePrc_dbt
WHERE (ware = aWare) and (KodPrice = aPCode) and (NdprtClnt = 0) and (KodClnt = 0) );
END IF;
END
////// End clipboard //////
В проекте:
GetPRC.ParamByName("aData").AsDate:=Data1.Date;
getPRC.ParamByName("aWare").AsString:=tbTable1.fieldByName("Ware").AsString;
getPRC.ParamByName("aPCode").AsInteger:=2;
getPrc.ExecProc;
Здесь вылетает ошибка:
Key violation
[Pervasive Software][ODBC Interface][Pervasive Software SQL Engine] The output parameter must be a variable or parameter name
Где и что я наворочал?
← →
Извращенец2 (2002-09-11 15:55) [1]Похоже, проблема в выходных параметрах а не в теле процедуры. Здесь ошибка на логическом уровне, а не на механическом(написание). проверь, что процедура должна выдавать и выдает ли она это.
← →
KDS (2002-09-11 18:27) [2]>The output parameter must be a variable or parameter name
по нашему:
Выходной параметр должен быть переменной (или именем параметра?)
проблема тут
getPRC.ParamByName("aPCode").AsInteger:=2;
надо ставить переменную туда, а не литерал! Т.е.
var vPCode:SmallInt;
...
vPCode:=2;
...
getPRC.ParamByName("aPCode").AsInteger:=vPCode;
← →
Алексей Пеньков (2002-09-12 08:17) [3]>Извращенец2
>проверь, что процедура должна выдавать и выдает ли она это.
Ошибка вылетает при попытке выполнить процедуру, т.е. ничего не выдает.
>KDS
К сожалению, не тут. К тому же aPCode - входной (IN) параметр.
← →
Извращенец2 (2002-09-12 08:48) [4]> Алексей Пеньков
я имел ввиду логическую модель, т.е. прокрутить все в голове:)
← →
ЮЮ (2002-09-12 08:59) [5]SET aPrice = (SELECT price FROM warePrc_dbt WHERE (ware = aWare) and (KodPrice = aPCode) and (NdprtClnt = 0) and (KodClnt = 0) );
попытка переменной присвоить DataSet. Очевидно, что переменной надо присваивать значение поля одной из записей, возвращаемой SELECTOM
← →
LordOfSilence (2002-09-12 09:04) [6]То Алексей Пеньков.
Извините, немного не по теме.
Алексей, а Вы случайно никогда не работали в Москве
на фирме НИКПА+?
← →
Алексей Пеньков (2002-09-12 10:30) [7]>Извращенец2
В голове логика срабатывает (IMHO), а на сервере отказывает :)
>ЮЮ
Вероятно, Вы правы. Попробую использовать CURSOR для установки
значения выходного параметра.
>LordOfSilence
Нет, но готов рассмотреть предложения о сотрудничестве ;)
← →
SteelHorse (2002-09-12 10:41) [8]>Алексей Пеньков
Извините, значит тезка и по имени и по фамилии
с одним человеком. Бывают всякие совпадения...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c