Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2017, 17:49   #1
MagomedAina
 
Регистрация: 19.03.2009
Сообщений: 6
По умолчанию Проблема с выходным параметром хранимой процедуры

Здорова Товарищи...
Вопрос следующий...

Есть процедура хранимая (FireBird 2):
Цитата:

create or alter procedure ADDORDERS (
OPKGONE smallint,
NUMPHONE varchar(15),
DNUMPHONE1 varchar(15),
DNUMPHONE2 varchar(15),
CSURNAME DVCHAR_AVERAGE,
CNAME DVCHAR_AVERAGE,
CSECONDNAME DVCHAR_AVERAGE,
CADRES DVARCHAR,
OOPERID DINT_NULL,
NUMITEM DINT_NULL,
ORDERDESC DTEXT,
NORDER varchar(20),
IDORDER DINT_NULL)
returns (
ORDNUMBER varchar(20))
as
declare variable TMPNM smallint;
declare variable COUNTRECORD integer;
declare variable CID DINT_NULL;
begin
/* Procedure Text */
countrecord = 0;
select count(id) from customers where PHONE LIKE :numphone into :countrecord;

select count(id)+1 from orders where orderdate >= current_date and ITEMKCH = :numitem into :tmpnm;

if (countrecord = 0) then begin
insert into customers (PHONE, DPHONE1, DPHONE2, SURNAME, NAME, SECONDNAME) values (:numphone, numphone1, numphone2, :csurname, :cname, :csecondname)
returning ID into :cid;
end
else begin
select id from customers where PHONE LIKE :numphone into :cid;
update customers set PHONE = :numphone, SURNAME = :csurname, NAME = :cname, SECONDNAME = :csecondname
where ID = :cid;
end

insert into orders (ID, ORDERNUM, CUSTOMERID, OPERATORID, ORDERDATE, ORDERTIME, DELIVERYADR, ITEMKCH, PKGONE, DESCORDER, APRINT)
values (:idorder, :norder || '-' || :tmpnm, :cid, operid, cast('NOW' as date), cast('NOW' as time), :cadres, :numitem, pkgone, rderdesc, 0);

ordnumber = :norder || '-' || :tmpnm;

suspend;

end
--------------------------

В программе хочу получить данные выходной переменной : ordnumber

Делаю так в программе


Код:

if not DM.FSProc.Transaction.InTransaction then DM.FSProc.Transaction.StartTransaction;

                        with DM.FSProc do begin
                           StoredProcName := 'ADDORDERS';
                           ParamByName('NUMPHONE').AsString := OperationPhoneRusNumber(edPhoneCall.Text);
                           ParamByName('DNUMPHONE1').AsString := OperationPhoneRusNumber(edDPhone1.Text);
                           ParamByName('DNUMPHONE2').AsString := OperationPhoneRusNumber(edDPhone2.Text);
                           ParamByName('CSURNAME').AsString := edSurN.Text;
                           ParamByName('CNAME').AsString := edName.Text;
                           ParamByName('CSECONDNAME').AsString := edSecN.Text;
                           ParamByName('CADRES').AsString := strAddress{edAdr.Text};
                           ParamByName('OOPERID').AsInteger := DM.idOper;
                           ParamByName('NUMITEM').AsInteger := item_kitchen;
                           if rbtPkgYes.Checked then ParamByName('OPKGONE').AsInteger := 1;
                           if rbtPkgNo.Checked then ParamByName('OPKGONE').AsInteger := 2;
                           ParamByName('ORDERDESC').AsString := DescOrder.Lines.Text;
                          // ParamByName('MINFORDER').AsString := moreInfoDesc.Lines.Text;
                           ParamByName('NORDER').AsString := nm_order;
                           ParamByName('IDORDER').AsInteger := frmGlav.ID_GEN_ID_ORDERS;
                           Prepare;
                           ExecProc;
                        end;
                        afterNumOrd := DM.FSProc.ParamValue('ORDNUMBER').AsString; - вот здесь появляется ошибка

                        DM.FSProc.Transaction.Commit;

afterNumOrd := DM.FSProc.ParamValue('ORDNUMBER').A sString - возникает ошибка Invalid varint operation

Не подскажете где ошибка, или что я делаю неправильно

Спасибо
MagomedAina вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов хранимой процедуры Swatch PHP 0 02.08.2013 13:18
Написание процедур select, delete, update, insert (с выходным параметром) NatRez SQL, базы данных 4 21.10.2012 19:54
Параметры хранимой процедуры yasic БД в Delphi 4 26.01.2012 18:10
Проблема с вызовом хранимой процедуры в CodeGear Delphi 2009 под SQL 2008 met123 БД в Delphi 0 26.04.2011 16:23
Выполнение хранимой процедуры с output параметром Иванчо БД в Delphi 5 26.10.2007 14:59