Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.03;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
14-8120
RV
2002-09-02 10:00
2002.10.03
---|Ветка была без названия|---


3-7793
Duce
2002-09-11 18:49
2002.10.03
Как в связке БДЕ+Оракл вернуть набор(курсор) из хранимой прц/фун?


1-8026
XPatriot
2002-09-20 20:38
2002.10.03
PopUpMenu


1-7885
AL2002
2002-09-17 17:40
2002.10.03
AddFontResource


1-8039
novarm44
2002-09-22 03:06
2002.10.03
Доступ к тексту HTML в TWebBrowser