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

Вниз

Ошибка в выполнении запроса: но почему??? FireBird 1.5   Найти похожие ветки 

 
Koala ©   (2005-07-22 11:41) [0]

второй час бьюсь... не могу понять, почему?
SQLCode = -303
IBErrorCode = 335544569
IBMessage:
Ошибка динамического SQL.
код ошибки SQL = -303.
ошибка преобразования из строки "АИ-95".


CREATE PROCEDURE PR_INSERT_FUEL_BORDEREAU (
   IN_TRAVEL_ID_FFUEL INTEGER,
   IN_SPEEDOMETER_ENT INTEGER,
   IN_SPEEDOMETER_END INTEGER,
   IN_SPEEDOMETER_RESULT INTEGER,
   IN_SPEEDOMETER_CITY INTEGER,
   IN_SPEEDOMETER_ROUTE INTEGER,
   IN_FUEL_ENT NUMERIC(5,1),
   IN_FUEL_END NUMERIC(5,1),
   IN_FUEL_CITY NUMERIC(5,1),
   IN_FUEL_ROUTE NUMERIC(5,1),
   IN_FUEL_RESULT NUMERIC(5,1),
   IN_RECEIVED_FUEL NUMERIC(5,1),
   IN_RECEIVED_TYPE_FUEL VARCHAR(10)))
AS
BEGIN
 INSERT INTO TBL_FUEL_BORDEREAU (
   TRAVEL_ID_FFUEL,
   SPEEDOMETER_ENT,
   SPEEDOMETER_END,
   SPEEDOMETER_RESULT,
   SPEEDOMETER_CITY,
   SPEEDOMETER_ROUTE,
   FUEL_ENT,
   FUEL_END,
   FUEL_CITY,
   FUEL_ROUTE,
   FUEL_RESULT,
   RECEIVED_FUEL,
   RECEIVED_TYPE_FUEL,
   DATE_EDIT)
 VALUES (
   :IN_TRAVEL_ID_FFUEL,
   :IN_SPEEDOMETER_ENT,
   :IN_SPEEDOMETER_END,
   :IN_SPEEDOMETER_RESULT,
   :IN_SPEEDOMETER_CITY,
   :IN_SPEEDOMETER_ROUTE,
   :IN_FUEL_ENT,
   :IN_FUEL_END,
   :IN_FUEL_CITY,
   :IN_FUEL_ROUTE,
   :IN_FUEL_RESULT,
   :IN_RECEIVED_FUEL,
   :IN_RECEIVED_TYPE_FUEL,
   "NOW");
END

вызываю из др. процедуры так:

 EXECUTE PROCEDURE PR_INSERT_FUEL_BORDEREAU(
         :VAR_TRAVEL_ID,
         :VAR_SPEEDOMETER_ENT,
         :VAR_SPEEDOMETER_END,
         :IN_SPEEDOM_RESULT,
         :IN_SPEEDOM_CITY,
         :IN_SPEEDOM_ROUTE,
         :VAR_FUEL_ENT,
         :VAR_FUEL_END,
         :IN_FUEL_CITY,
         :IN_FUEL_ROUTE,
         :IN_FUEL_RESULT,
         :IN_RECEIVED_FUEL,
         :IN_RECEIVED_FUEL_TYPE);

в программе вызываю storedProcedure:
    try
      StartTransact;
        with sp_InsTemp do
          begin
            if not Prepared then Prepare;
             Params[1].AsInteger := ...;
             ........
             Params[8].AsString  := Trim(cb_TypeFuel.Text);
             ExecProc;
          end;
      trWrite.Commit;              
    except;
      trWrite.Rollback;
    end;


 
Johnmen ©   (2005-07-22 11:46) [1]

А где Params[0] ???

Вообще советую почитать про индексацию массивов и списков.


 
Koala ©   (2005-07-22 11:49) [2]


> Johnmen ©   (22.07.05 11:46)
> А где Params[0] ???
>
> Вообще советую почитать про индексацию массивов и списков.

Это я знаю....
когда писал ошибся не ту строку стер.... суть проблемы не в этом....


 
Johnmen ©   (2005-07-22 11:55) [3]

Проблема в несоотвествии значений параметров их типам.
А где это соответствие, ты не приводишь.


 
ЮЮ ©   (2005-07-22 12:07) [4]

Params[8].AsString  := Trim(cb_TypeFuel.Text);

восьмой параметр в процедуре
IN_FUEL_CITY NUMERIC(5,1)


 
Koala ©   (2005-07-22 12:19) [5]

привожу полный код процедуры которая вызывается

CREATE PROCEDURE PR_SAVE_DATE (
   IN_ID_TEMP INTEGER,
   IN_SPEEDOM_CITY INTEGER,
   IN_SPEEDOM_RESULT INTEGER,
   IN_SPEEDOM_ROUTE INTEGER,
   IN_FUEL_CITY NUMERIC(5,1),
   IN_FUEL_ROUTE NUMERIC(5,1),
   IN_FUEL_RESULT NUMERIC(5,1),
   IN_RECEIVED_FUEL NUMERIC(5,1),
   IN_RECEIVED_FUEL_TYPE VARCHAR(10)) - восьмой параметр
AS
DECLARE VARIABLE VAR_NUM_RECORD SMALLINT;
DECLARE VARIABLE VAR_TRAVEL_ID INTEGER;
DECLARE VARIABLE VAR_CLIENT_ID INTEGER;
DECLARE VARIABLE VAR_BUSINESS_TRIP INTEGER;
DECLARE VARIABLE VAR_TIME_ENT TIMESTAMP;
DECLARE VARIABLE VAR_TIME_END TIMESTAMP;
DECLARE VARIABLE VAR_TIME_USAGE VARCHAR(8);
DECLARE VARIABLE VAR_MINUTES INTEGER;
DECLARE VARIABLE VAR_SPEEDOMETER_ENT INTEGER;
DECLARE VARIABLE VAR_SPEEDOMETER_END INTEGER;
DECLARE VARIABLE VAR_SPEEDOMETER_RESULT INTEGER;
DECLARE VARIABLE VAR_FUEL_ENT NUMERIC(5,1);
DECLARE VARIABLE VAR_FUEL_END NUMERIC(5,1);
BEGIN
 BEGIN
     FOR
       SELECT TBL_TEMP.TRAVEL_ID, TBL_TEMP.CLIENT_ID,
              TBL_TEMP.BUSINESS_TRIP, TBL_TEMP.TIME_ENT, TBL_TEMP.TIME_END,
              TBL_TEMP.TIME_USAGE, TBL_TEMP.MINUTES, TBL_TEMP.SPEEDOMETER_ENT,
              TBL_TEMP.SPEEDOMETER_END, TBL_TEMP.SPEEDOMETER_RESULT
       FROM TBL_TEMP
         WHERE ((TBL_TEMP.TRAVEL_ID = :IN_ID_TEMP))
       ORDER BY TBL_TEMP.NUM_RECORD
         INTO :VAR_TRAVEL_ID,
              :VAR_CLIENT_ID,
              :VAR_BUSINESS_TRIP,
              :VAR_TIME_ENT,
              :VAR_TIME_END,
              :VAR_TIME_USAGE,
              :VAR_MINUTES,
              :VAR_SPEEDOMETER_ENT,
              :VAR_SPEEDOMETER_END,
              :VAR_SPEEDOMETER_RESULT
         DO
         BEGIN
           SUSPEND;
             EXECUTE PROCEDURE PR_INSERT_CARD_CUSTOMER(
                        :VAR_TRAVEL_ID,
                        :VAR_CLIENT_ID,
                        :VAR_TIME_ENT,
                        :VAR_TIME_END,
                        :VAR_TIME_USAGE,
                        :VAR_MINUTES,
                        :VAR_SPEEDOMETER_ENT,
                        :VAR_SPEEDOMETER_END,
                        :VAR_SPEEDOMETER_RESULT,
                        :VAR_BUSINESS_TRIP);
         END
   END
 BEGIN
 FOR
   SELECT FIRST 1 TBL_TEMP.SPEEDOMETER_ENT, TBL_TEMP.FUEL_ENT,
                  TBL_TEMP.NUM_RECORD
   FROM TBL_TEMP
   WHERE ((TBL_TEMP.TRAVEL_ID = :IN_ID_TEMP))
   ORDER BY TBL_TEMP.NUM_RECORD
   INTO :VAR_SPEEDOMETER_ENT,
        :VAR_FUEL_ENT,
        :VAR_NUM_RECORD
 DO SUSPEND;
END

BEGIN
 FOR
   SELECT FIRST 1 TBL_TEMP.SPEEDOMETER_END, TBL_TEMP.FUEL_END,
                  TBL_TEMP.NUM_RECORD
   FROM TBL_TEMP
   WHERE ((TBL_TEMP.TRAVEL_ID = :IN_ID_TEMP))
   ORDER BY TBL_TEMP.NUM_RECORD DESC
   INTO :VAR_SPEEDOMETER_END,
        :VAR_FUEL_END,
        :VAR_NUM_RECORD
 DO SUSPEND;
END

 EXECUTE PROCEDURE PR_INSERT_FUEL_BORDEREAU(
         :VAR_TRAVEL_ID,
         :VAR_SPEEDOMETER_ENT,
         :VAR_SPEEDOMETER_END,
         :IN_SPEEDOM_RESULT,
         :IN_SPEEDOM_CITY,
         :IN_SPEEDOM_ROUTE,
         :VAR_FUEL_ENT,
         :VAR_FUEL_END,
         :IN_FUEL_CITY,
         :IN_FUEL_ROUTE,
         :IN_FUEL_RESULT,
         :IN_RECEIVED_FUEL,
         :IN_RECEIVED_FUEL_TYPE);
 EXECUTE PROCEDURE PR_DELETE_TEMP(:IN_ID_TEMP);
end


 
dmitry501 ©   (2005-07-22 12:25) [6]

Перед строкой
Params[8].AsString  := Trim(cb_TypeFuel.Text);
вставь строку
Params[8].DataType := ftString;
Про это написал Johnmen ©   в [3]
Или передавай так
Params[8].AsString  := QuotedStr(Trim(cb_TypeFuel.Text)); но это криво


 
Koala ©   (2005-07-22 12:37) [7]


> dmitry501 ©   (22.07.05 12:25)


> Params[8].AsString  := QuotedStr(Trim(cb_TypeFuel.Text));
> но это криво

все равно та же ошибка.....


 
Koala ©   (2005-07-22 12:47) [8]

Хотя в IBExperte на прогонке все нормально.....


 
Koala ©   (2005-07-22 12:51) [9]

Старнно...
удалил из DataModule TFibStoredProc которую вызывал, и создал новую все заработало.....
Всем спасибо....

-----------------------------
бред какай-то....??????


 
Johnmen ©   (2005-07-22 13:22) [10]

Ничего странного. Менял процедуру после начала "использования" TFibStoredProc.



Страницы: 1 вся ветка

Текущий архив: 2005.09.04;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.042 c
14-1123081658
begin...end
2005-08-03 19:07
2005.09.04
"Проверь себя". Тест для начинающих.


1-1123825926
Strelets
2005-08-12 09:52
2005.09.04
Анализ символьной строки


14-1123221709
panov
2005-08-05 10:01
2005.09.04
О конференции "Начинающим"


5-1097407865
asdfgh
2004-10-10 15:31
2005.09.04
Перенос в ячейке StringGrid


14-1123490289
ocean
2005-08-08 12:38
2005.09.04
Реальные встречи