Invalid data conversion
, непонятна причина
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.249] |
|
|
информация о разделе
![]() | Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Invalid data conversion
, непонятна причина
|
Сообщ.
#1
,
|
|
|
|
Привет всем!
FireBird 1.5/Delphi_7 Собственно сабж. (IBClientError Invalid data conversion) Ошибка возникает именно при выполнении процедуры в дельфе. В IBExpert сама ХР проходит без проблем. Передаю в процедуру только один параметр строкового типа, ошибаться просто негде! Может у кого есть мысли из-за чего может быть? Текст хранимой процедуры: ![]() ![]() CREATE PROCEDURE ADD_URL ( AURL VARCHAR(250)) RETURNS ( OID BIGINT) AS DECLARE VARIABLE COUN INTEGER; DECLARE VARIABLE CURID BIGINT; begin /* Procedure Text */ for select count(id) from urls where url = :aurl into :coun do if (coun = 0) then begin curid = GEN_ID (gen_urls_id,1); insert into urls (id, url, hsip) values (:curid, :aurl, ''); oid = curid; end else begin oid = 0; end suspend; end^ Сам вызов из дельфи: ![]() ![]() FSP.Close; FSP.StoredProcName:= 'ADD_URL'; if FTR.InTransaction = false then FTR.StartTransaction; FSP.Params.Clear; FSP.ParamByName('AURL').AsString:= '333'; //URL; FSP.ExecProc; ID:= FSP.ParamByName('OID').AsInteger; где FSP - IBStoredProcedure, FTR - IBTransaction. На строке FSP.ExecProc; и появляется ошибка. Ума не приложу где еще ошибку искать! |
|
Сообщ.
#2
,
|
|
|
|
FSP - IBStoredProcedure - динамически если создаешь, то например в TADOStoredProc нужно перед присваением значения параметра , его создать:
![]() ![]() SP.Parameters.CreateParameter('AURL',ftString,pdInput,255,''); |
|
Сообщ.
#3
,
|
|
|
|
Modest Wizard, по крайней мере для MS SQL в TADOStoredProc не требовалось создавать параметры отдельно. В моем случае, есть целая куча других процедур, в которые параметры передаются точно также, но которые работают. Проблема в чем то другом...
|
|
Сообщ.
#4
,
|
|
|
|
Кажется разобрался: GEN_ID возвращает integer, а не BIGINT и поэтому при присвоении выходному параметру (типа BIGINT) значения генератора и возникала ошибка. Этот IB не перестает меня удивлять!
|