Conversion error from string null

Submitted by: @pavel-zotov Run this on 2.5, 3.x and 4.x: set sqlda_display on; set term ^; execute block returns(o_rel_id int) as begin execute statement ('select iif(1 <= ?, ?, null) from r...

Comments

@firebird-issue-importer

Submitted by: @pavel-zotov

Run this on 2.5, 3.x and 4.x:

set sqlda_display on;
set term ^;
execute block returns(o_rel_id int) as
begin
execute statement (‘select iif(1 <= ?, ?, null) from rdb$database’) (2, 3) into o_rel_id;
suspend;
end
^
set term ;^

Output:
1) on 2.5:

INPUT SQLDA version: 1 sqln: 10 sqld: 0

OUTPUT SQLDA version: 1 sqln: 20 sqld: 1
01: sqltype: 497 LONG Nullable sqlscale: 0 sqlsubtype: 0 sqllen: 4
: name: (8)O_REL_ID alias: (8)O_REL_ID
: table: (0) owner: (0)

============
Statement failed, SQLSTATE = HY004
Dynamic SQL Error
-SQL error code = -804
-Data type unknown
-At block line: 3, col: 5

2) on 3.x and 4.x:

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 496 LONG Nullable scale: 0 subtype: 0 len: 4
: name: O_REL_ID alias: O_REL_ID
: table: owner:

============
Statement failed, SQLSTATE = 22018
conversion error from string » «
-At block line: 3, col: 5

One need to know in advance that NULL w/o CAST() is considered as CHAR(1), but i could not find this in the $FB_HOME/doc/* and in https://www.firebirdsql.org/file/documentation/html/en/firebirddocs/nullguide/firebird-null-guide.html
Phrase: conversion error from string » » — definitely looks weird (there is no any text variables / parameters in this example).

Perhaps, it will be better to change this message back to 2.5.x ?

@firebird-issue-importer

Commented by: @mrotteveel

«One need to know in advance that NULL w/o CAST() is considered as CHAR(1)», why do you think that is the case? As far as I know it shouldn’t have any type in this situation. It looks to me like the behaviour in 2.5 is correct (where it cannot infer the datatype), and the behavior in 3.0 and 4.0 is wrong.

Instead, it looks to me that maybe the datatype is inferred as SQL_NULL, which shouldn’t be usable in this context, which is then coerced to a string which is then not convertible to an integer.

@firebird-issue-importer

Commented by: @pavel-zotov

> why do you think that is the case? // char(1)

Because when i explicitly cast NULL to required datatype (int) then all works fine:

set term ^;
execute block returns(o_rel_id int) as
begin
execute statement (‘select iif(1 <= ?, ?, cast(null as int) ) from rdb$database’) (2, 3) into o_rel_id;
suspend;
end
^

INPUT message field count: 0

OUTPUT message field count: 1
01: sqltype: 496 LONG Nullable scale: 0 subtype: 0 len: 4
: name: O_REL_ID alias: O_REL_ID
: table: owner:

============
3

PS.
Maybe subject of this ticket is also confusing as null cast/missed cast… :-)

Once again:
1) execute statement (‘select iif(1 <= ?, ?, null) from rdb$database’) (2, 3) into o_rel_id; ==> Statement failed, SQLSTATE = 22018 / conversion error from string » «
2) execute statement (‘select iif(1 <= ?, ?, cast(null as int) ) from rdb$database’) (2, 3) into o_rel_id; ==> all OK.

Here we can see nothing about cast parameters («?»); rather it’s about cast NULL literal :-)

@firebird-issue-importer

Commented by: @mrotteveel

As I said in my previous comment, it looks like the second parameter is inferred as type SQL_NULL, which isn’t usable in this context. When the parameter is then assigned, it gets the value ‘not null’ instead of 3, that is then coerced to a string which is then not convertible to an integer. The behaviour of 2.5 should probably be retained in this case, or at least SQL_NULL should not be allowed in this context.

I have confirmed this by preparing the statement select iif(1 <= ?, ?, cast(null as int) ) from rdb$database using Jaybird, and checking the type of the second parameter, which is 32767, or a (nullable) SQL_NULL.

@firebird-issue-importer

Commented by: @mrotteveel

The reason the cast works, is that changes the inference of the parameter to SQL_LONG instead of SQL_NULL (just as would have been if you used iif(1 <= ?, cast(? as int), null)), that is because in an expression like iif(…, ?, VAL), the type of the parameter is inferred from the type of VAL, and if VAL is NULL, then it can only infer SQL_NULL (where in 2.5 it couldn’t derive a datatype, so it produced a datatype unknown error), unless you explicitly cast that null to an explicit type.

Repeating my check in Jaybird, the type of the second parameter is (nullable) SQL_LONG in both

select iif(1 <= ?, ?, cast(null as int)) from rdb$database

and

select iif(1 <= ?, cast(? as int), null) from rdb$database

1 participant

@firebird-issue-importer

0 / 0 / 0

Регистрация: 26.05.2009

Сообщений: 39

1

20.01.2010, 10:43. Показов 21360. Ответов 17


Доброго времени суток всем!!!

Недавно столкнулся с проблемой conversion error from string «» в InterBase, программу установил в 2007 году, работала нормально. Начиная с 01 января 2010 года перестало стабильно работать, то есть при работе с IBConsole результаты не сохраняются и выводится ошибка conversion error from string «», иногда ошибка выводится с номером ошибки в ковычках, но в большинстве случаев без номера ошибки. Пытался исправить, никак не получается. Подскажите в чем проблема и что надо делать???

Изображения

 

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



213 / 107 / 15

Регистрация: 28.01.2009

Сообщений: 481

20.01.2010, 12:49

2



0



0 / 0 / 0

Регистрация: 26.05.2009

Сообщений: 39

20.01.2010, 13:05

 [ТС]

3

Ex_Soft,

Да, тоже самое. А это не связано с сертификатом?



0



1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

20.01.2010, 14:05

4

В 9 случаях из 10 где-то формируется строка, длина которой больше длины поля набора данных



0



0 / 0 / 0

Регистрация: 26.05.2009

Сообщений: 39

20.01.2010, 15:10

 [ТС]

5

SAMZ,

Как изменить поле таблицы, в таблице это поле varchar(6).

Добавлено через 14 минут
SAMZ,

Точно, нашел это поле, в таблице это поле varchar(6). Хотелось бы изменить ее на большее. Если не трудно опиши пошаговую работу (SQL query или что-то похожее на нее). Thank’s



0



1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

20.01.2010, 15:53

6

Найди в БД домен, которым описывается это поле. Если есть IBExpert, то это не проблема
Дале с помощью домена можешь задать новую длину или выполнить запрос

Код

update RDB$FIELDS set
RDB$FIELD_LENGTH = новая длина,
RDB$CHARACTER_LENGTH = новая длина
where RDB$FIELD_NAME = 'ЗДЕСЬ ИМЯ ДОМЕНА'

новая длина — это новая длина поля



0



0 / 0 / 0

Регистрация: 26.05.2009

Сообщений: 39

20.01.2010, 20:49

 [ТС]

7

SAMZ,

Установлено IBConsole, процедуру создания новой длины или выполнения запроса можно осуществить в IBConsole?



0



Ex_Soft

213 / 107 / 15

Регистрация: 28.01.2009

Сообщений: 481

21.01.2010, 01:04

8

Цитата
Сообщение от SAMZ
Посмотреть сообщение

Код

update RDB$FIELDS set
RDB$FIELD_LENGTH = новая длина,
RDB$CHARACTER_LENGTH = новая длина
where RDB$FIELD_NAME = 'ЗДЕСЬ ИМЯ ДОМЕНА'

/me думает: по кому-то плачет канделябр…

SQL
1
ALTER TABLE TableName ALTER FieldName TYPE VARCHAR(10)

А если домен:
— создаем новый домен
— создаем новое поле с новым доменом
— переливаем



0



1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

21.01.2010, 06:13

9

Цитата
Сообщение от dozent
Посмотреть сообщение

Установлено IBConsole, процедуру создания новой длины или выполнения запроса можно осуществить в IBConsole?

IBConsole уже сто лет не использую. Скачай IBExpert c IBase.ru, очень хороший инструмент.

С замечанием Ex_Soft согласен, канделябра заслужил.
Изменения метаданных непосредственным вмешательством в системные таблицы — опиум для народа



0



Супер-модератор

8781 / 2532 / 144

Регистрация: 07.03.2007

Сообщений: 11,873

21.01.2010, 09:28

10

SAMZ, ну я бы таких дифирамбов IBExpert тоже не пел, потому что у меня он глючит причем даже не в работе с базой, а в самом интерфейсе, постоянно сыпет эксепшены… либо версия кривая, либо у меня руки, кто его знает…



0



1263 / 706 / 62

Регистрация: 21.12.2009

Сообщений: 2,255

21.01.2010, 10:20

11

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

ну я бы таких дифирамбов IBExpert тоже не пел, потому что у меня он глючит причем даже не в работе с базой, а в самом интерфейсе, постоянно сыпет эксепшены… либо версия кривая, либо у меня руки, кто его знает…

На IB/FB работаю приблизительно с 1996 года и очень давно, много лет, использую IBExpert. С проблемами не сталкивался



0



213 / 107 / 15

Регистрация: 28.01.2009

Сообщений: 481

21.01.2010, 10:26

12

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

ну я бы таких дифирамбов IBExpert тоже не пел, потому что у меня он глючит причем даже не в работе с базой, а в самом интерфейсе, постоянно сыпет эксепшены… либо версия кривая, либо у меня руки, кто его знает…

/me думает: странно: всю Одессу удовлетворяет, одного Вас — нЭт. Лучшего GUI инструмента под IB/FB/Yaffil — нЭт. А по поводу глюков — сообщите Александру (news://ibexpert.info/interbase.ibexpert.ru)



0



dozent

0 / 0 / 0

Регистрация: 26.05.2009

Сообщений: 39

21.01.2010, 11:54

 [ТС]

13

Ex_Soft,

На запрос

SQL
1
ALTER TABLE TableName ALTER FieldName TYPE VARCHAR(10)

выводит такой error

Миниатюры

Не могу устранить ошибку conversion error from string "" в InterBase
 



0



Супер-модератор

8781 / 2532 / 144

Регистрация: 07.03.2007

Сообщений: 11,873

21.01.2010, 12:22

14

Ex_Soft,

Цитата
Сообщение от Ex_Soft
Посмотреть сообщение

/me думает: странно: всю Одессу удовлетворяет, одного Вас — нЭт. Лучшего GUI инструмента под IB/FB/Yaffil — нЭт.

а меня как-то раздражают окошки с неперехваченными исключениями, и, тем более, я ничего не сказал про работу с базами, у меня притензии именно программным ошибкам…



0



Ex_Soft

213 / 107 / 15

Регистрация: 28.01.2009

Сообщений: 481

21.01.2010, 13:00

15

Цитата
Сообщение от dozent
Посмотреть сообщение

такой error

SQL
1
2
CREATE TABLE TableVictim (FieldVictim VARCHAR(6))
ALTER TABLE TableVictim  ALTER FieldVictim TYPE VARCHAR(10)

Все сухо… FB 2.1 WI-V6.3.3.18185 Дорогая редакция, что я делаю не так? Дайте DDL таблицы и версию сервера.

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

а меня как-то раздражают окошки с неперехваченными исключениями … у меня притензии именно программным ошибкам…

1. Версия IBExpert’а
2.

Цитата
Сообщение от Ex_Soft
Посмотреть сообщение

А по поводу глюков — сообщите Александру (news://ibexpert.info/interbase.ibexpert.ru)



0



0 / 0 / 0

Регистрация: 26.05.2009

Сообщений: 39

21.01.2010, 13:37

 [ТС]

16

Ex_Soft,

Цитата
Сообщение от Ex_Soft
Посмотреть сообщение

Все сухо… FB 2.1 WI-V6.3.3.18185 Дорогая редакция, что я делаю не так? Дайте DDL таблицы и версию сервера.

Версия сервера Intebase 7.0
Таблица PAYMENT_REQUEST (код прикреплен)

Изменить таблицу, то есть поле никак не получается…



0



Супер-модератор

8781 / 2532 / 144

Регистрация: 07.03.2007

Сообщений: 11,873

21.01.2010, 14:01

17

Ex_Soft, Version 2004 03 16



0



213 / 107 / 15

Регистрация: 28.01.2009

Сообщений: 481

21.01.2010, 15:41

18

Цитата
Сообщение от dozent
Посмотреть сообщение

выводит такой error

БлЫн!!! Нечего printscreen’ы вставлять. Не шоб просто самому руками продублировать. Ну там же написано:

Цитата
Сообщение от IBConsole

Column REQUEST_CODE from table PAYMENT_REQUEST is referenced in DESBURSEGMENT_INSERT

DESBURSEGMENT_INSERT — это тригер? Попробуйте грохнуть его, alter’нуть таблицу и переподписать.

Цитата
Сообщение от Lord_Voodoo
Посмотреть сообщение

2004 03 16

IBExpert
IBEScript
IBEScriptDDL
По состоянию на сегодня 21.01.2010: 2010.01.08



1



Модераторы: kdv, dimitr

DastiX

Сообщения: 1
Зарегистрирован: 27 янв 2010, 03:47

conversion error from string » «

Доброго времени суток)

Совсем недавно начал изучение Firebird, по этому если что не так — не судите строго.
Собственно сабж.

Есть firebird 2.0 WI-V2.0.1.12855, работает на VMware 6.5, WinXP 32bit.
Через IBExpert созданы три таблицы: одна главная и две подчиненные.
К примеру главная ФИРМЫ и подчиненные ЛЮДИ и ТЕХНИКА.
Хочу соответственно, что бы одной строке в главной соответствовало несколько строк в подчиненной.
Т.е. в главной таблице ФИРМЫ есть поле ЛЮДИ, и поле ТЕХНИКА типа INTEGER;
Бегаем по фирмам -> отображаются только те люди и техника, которые относятся к этой фирме.
Так вот. Создаю в главной таблице два уникальных поля типа INTEGER, пытаюсь ввести данные — все ок.
В каждой подчиненной по одному полю для внешнего ключа.
Назначаю внешний ключ в таблице ЛЮДИ — все ок. Ввожу данные в поле ЛЮДИ в таблице ФИРМЫ — ок,
в IBExpert можно посмотреть через MasterDetail что определенной фирме соответствует определенный список людей.
И тут самое интересное, назначаю внешний ключ в таблице ТЕХНИКА, все прокатывает.
Но как только пытаюсь ввести данные в главной таблице, в поле ТЕХНИКА появляется ошибка
<<Overflow occurred durig data type conversion
conversion error from string » »
[00543BBF]>> хотя ввожу число.
Дальше интереснее. Удаляю из таблицы ТЕХНИКА внешний ключ(индекс) — ок.
Пытаюсь удалить ограничение на уникальность поля ТЕХНИКА в таблице ФИРМЫ, создается тразакция, все ок, нажимаю Commit,
и получаю deadlock. Хотя вроде все закрыто….
Пробую еще раз и получаю сообщение
<<This operation is not defined for system tables.
unsuccessful metadata update.
object INDEX is in use.
Changes will be rolled back…>>
После этого IBExpert зависает при закрытии, а при принудительном завершении соответственно отчет об ошибке.
Переоткрываю и удалю ограничение на уникальность…
В может быть тут дело не пойму. Откуда эта ошибка неизвестно…

Сколько уже написал, надеюсь кто-нибудь прочитает…заранее спасибо за ответы….


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: conversion error from string » «

Сообщение

kdv » 27 янв 2010, 18:20

conversation — это общение. conversion — конверсия, конвертация. Исправил.

По сути — либо сообщение не то из-за неправильного firebird.msg (результат установки разных версий IB/ФБ на одном компе), либо действительно раньше было char/varchar, а потом поменяли на integer, или наоборот.

Если второе, то это обычно следствие модификации структуры таблиц, наполненных данными. Причем не просто модификации, а из IBExpert.
Рекомендую извлечь скрипт БД, создать из него базу по новой, причем обновить ФБ, а то 2.0.1 как то не очень, и перелить данные из старой покоцанной БД в новую.


    msm.ru

    Нравится ресурс?

    Помоги проекту!

    !
    информация о разделе

    user posted image Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных — обсуждаем в разделе «Базы данных: общие вопросы». Убедительная просьба — соблюдать «Правила форума» и не пренебрегать «Правильным оформлением своих тем». Прежде, чем создавать тему, имеет смысл заглянуть в раздел «Базы данных: FAQ», возможно там уже есть ответ.

    >
    conversion error from string

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    04.08.06, 05:37

      Senior Member

      ****

      Рейтинг (т): 59

      Всем привет, БД IB 1.5 делаю следующий запрос

      ExpandedWrap disabled

        delete from spool where id = ‘{2EE94DD7-7AB4-4424-87A5-3FE2A61C7702}’

      и выдает ошибку
      Overflow occurred during data type conversion.
      conversion error from string «{2EE94DD7-7AB4-4424-87A5-3FE2A61C7702}».
      Как это полечить?
      спаисбо за рание


      SilverShield



      Сообщ.
      #2

      ,
      04.08.06, 06:13

        Full Member

        ***

        Рейтинг (т): 11

        IB 1.5 :o ? А у тебя id точно строковое? Попробуй поставить не одинарные, а двойные кавычки (т.е. не ‘ а «)

        Wizard

        Bas



        Сообщ.
        #3

        ,
        04.08.06, 06:36

          Цитата Nahel @ 04.08.06, 05:37

          conversion error from string

          Тут явно идет конвертация из строки во чтото другое.


          Nahel



          Сообщ.
          #4

          ,
          04.08.06, 06:59

            Senior Member

            ****

            Рейтинг (т): 59

            Раньше id был интегер сечас CHAR(40)
            ковычки пробовал то же самое.
            к стати insert срабатывает на ура

            Wizard

            Bas



            Сообщ.
            #5

            ,
            04.08.06, 08:16

              А связи есть?


              Romkin



              Сообщ.
              #6

              ,
              04.08.06, 08:51

                Проверить Foreign keys, triggers и тд


                Nahel



                Сообщ.
                #7

                ,
                05.08.06, 09:08

                  Senior Member

                  ****

                  Рейтинг (т): 59

                  дело было в следующем в табдице были записи соответственно ID был числовым, после смены ID на CHAR(40) видимо записи коректно не конвертировались, стоило их подпраить ручками и все зафунцикляло.
                  Всем спасибо за помощь

                  Master

                  jack128



                  Сообщ.
                  #8

                  ,
                  05.08.06, 18:20

                    Цитата Nahel @ 04.08.06, 05:37

                    БД IB 1.5

                    класс. Где ты такой раритер достал??? С Абрамса скомуниздил? :D


                    Sanbyter



                    Сообщ.
                    #9

                    ,
                    31.03.11, 10:29

                      Всем привет. У меня примерно такая же ситуация, при записи в БД данных вылетает ошибка:
                      conversion error from string.
                      Сервер: Windows Server 2008, Interbase 7.5.
                      Что самое интересное, локально на сервере все нормально работает, удаленно нет. Тип строки char (32), пробовал изменять длину и сам тип строки, не помогает((. Помогите пожалуйста советом.

                      Wizard

                      Bas



                      Сообщ.
                      #10

                      ,
                      31.03.11, 11:45

                        Что записываем?

                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                        0 пользователей:

                        • Предыдущая тема
                        • Базы данных: SQL
                        • Следующая тема

                        Рейтинг@Mail.ru

                        [ Script execution time: 0,0288 ]   [ 15 queries used ]   [ Generated: 9.02.23, 09:18 GMT ]  

                        Словил ошибку на строке Session[guid + «data»] = dbCXD.getSqlTable(query,null);

                        conversion error from string «А»
                        Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.

                        Сведения об исключении: FirebirdSql.Data.Common.IscException: conversion error from string «А»

                        Ошибка источника:

                        { //строка 66
                                if (Request.QueryString["guid"] != null) //строка 67
                                    guid = Request.QueryString["guid"].ToString(); //строка 68
                                else guid = Guid.NewGuid().ToString(); }  //строка 69
                          .....
                            query = query.Replace("#PERIOD#", cb_period.Value.ToString().PadLeft(2, '0')); //строка 369
                        
                         Session[guid + "data"] = dbCXD.getSqlTable(query,null); //строка 370
                        
                        } //строка 371
                        

                        Исходный файл: c:inetpubYaKITv4.1.MSHControlsCMconstructor.ascx.cs Строка: 371

                        Трассировка стека:

                        [IscException: conversion error from string «А»]*
                        FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ProcessResponse(IResponse response) +70
                        FirebirdSql.Data.Client.Managed.Version10.GdsDatabase.ReadResponse() +60
                        FirebirdSql.Data.Client.Managed.Version12.GdsStatement.Execute() +240
                        FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteCommand(CommandBehavior behavior, Boolean returnsSet) +293
                        FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader(CommandBehavior behavior) +49

                        [FbException (0x1400000e): conversion error from string «А»]
                        FirebirdSql.Data.FirebirdClient.FbCommand.ExecuteReader(CommandBehavior
                        behavior) +205
                        System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,
                        DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String
                        srcTable, IDbCommand command, CommandBehavior behavior) +214
                        System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32
                        startRecord, Int32 maxRecords, String srcTable, IDbCommand command,
                        CommandBehavior behavior) +180
                        System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String
                        srcTable) +123 YaKIT.C1.DataBase.FireBird.getSqlTable(String query)
                        +447 YaKIT.C1.DataBase.DBConnect.getSqlTable(String query, List`1 lstParams) +499

                        [Exception: YaKIT.C1.Database => getSqlTable :: select t1.*, t2.ORD as
                        ULUS_CUSTOM_ORD from (select distinct f.nomer,f.namemest,f.okpo,
                        f.oktmo,f.ulus, f.st, f.gr, f.zn from frm_data2019_0 f,
                        s_okpo2019_period12 o, frm_form2019 t where f.okpo=o.okpo and
                        t.kod=f.st and t.gr_st=2) t1 inner join S_ULUS t2 on t1.ULUS = t2.ULUS

                        conversion error from string «А»]
                        YaKIT.C1.DataBase.DBConnect.catchThrow(String message, Exception ex)
                        +206 YaKIT.C1.DataBase.DBConnect.getSqlTable(String query, List`1 lstParams) +1031 CM_constructor.setSprData() in
                        c:inetpubYaKITv4.1.MSHControlsCMconstructor.ascx.cs:371
                        CM_constructor.Page_Load(Object sender, EventArgs e) in
                        c:inetpubYaKITv4.1.MSHControlsCMconstructor.ascx.cs:87
                        System.Web.UI.Control.OnLoad(EventArgs e) +108
                        System.Web.UI.Control.LoadRecursive() +90
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Control.LoadRecursive() +185
                        System.Web.UI.Page.ProcessRequestMain(Boolean
                        includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
                        +1607*

                        На чтение 6 мин Обновлено 15.01.2023

                        Sql error code 303 conversion error from string

                        » title=»>» width=»8″ height=»8″/> Ошибка 303, FireBird

                        TechnoMag
                        Дата 22.8.2013, 20:12 (ссылка) | (нет голосов) Загрузка .

                        Шустрый

                        Профиль
                        Группа: Участник
                        Сообщений: 122
                        Регистрация: 20.3.2010

                        Репутация: нет
                        Всего: нет

                        Код
                        CREATE TABLE NEWS (
                        ID D_ID NOT NULL /* D_ID = INTEGER */,
                        TITLE D_NEWS_TITLE NOT NULL /* D_NEWS_TITLE = CHAR(255) */,
                        PRICE D_PRICE /* D_PRICE = CHAR(20) */,
                        DATE_NEW D_DATE NOT NULL /* D_DATE = DATE */,
                        LINK D_LINK /* D_LINK = CHAR(255) */,
                        FAVORITE D_BOOL /* D_BOOL = SMALLINT DEFAULT 0 CHECK (VALUE IN (1,0)) */,
                        ID_CITE_M D_ID /* D_ID = INTEGER */,
                        TAG D_ID /* D_ID = INTEGER */
                        );

                        CREATE TABLE NEWS_INFO (
                        ID D_ID NOT NULL /* D_ID = INTEGER */,
                        INFO D_NEWS_INFO /* D_NEWS_INFO = CHAR(4096) */
                        );

                        create or alter procedure INSERT_NEW (
                        IN_NAME D_NEWS_TITLE,
                        IN_BUDGET D_PRICE,
                        IN_URL D_LINK,
                        IN_CATEGORY D_TAG_NAME,
                        IN_PLUGIN_NAME D_CITE_NAME,
                        IN_DESCRIPTION D_NEWS_INFO)
                        as
                        declare variable ID_TAG D_ID;
                        declare variable ID_PLUGIN D_ID;
                        declare variable ID_NEW_PROJECT D_ID;
                        begin
                        select ID FROM cites WHERE NAME=:in_plugin_name
                        INTO :ID_PlUGIN;
                        if (NOT exists (SELECT tag_name FROM tags where tag_name=:in_category)) THEN
                        INSERT INTO TAGs (tag_name) VALUES (:IN_category);
                        select ID FROM tags WHERE TAG_NAME=:in_category
                        INTO :ID_TAG;
                        ID_NEW_PROJECT = GEN_ID(GEN_NEWS_ID, 1);
                        insert into news (ID, TITLE, PRICE, DATE_NEW, LINK, FAVORITE, ID_CITE_M, TAG)
                        VALUES (:ID_NEW_PROJECT, :in_name, :in_budget, current_date, :in_url, 0, :ID_PLUGIN, :ID_TAG );
                        insert into news_info (ID, INFO) VALUES (:ID_NEW_PROJECT, :IN_DESCRIPTION);
                        POST_EVENT ‘eventNewProjectIsAdded’;
                        end^

                        Выполнение хранимой процедуры:

                        Код
                        procedure TDataModule1.InsertNewProject(Name, Budget, Url, Category,
                        Description, PluginName: string);
                        begin
                        pFIBTransactionWrite.Active := true;
                        pFIBStoredProc1.StoredProcName := ‘INSERT_NEW’;
                        pFIBStoredProc1.Params.ParamByName(‘IN_NAME’).AsString := Name;
                        pFIBStoredProc1.Params.ParamByName(‘IN_BUDGET’).AsString := Budget;
                        pFIBStoredProc1.Params.ParamByName(‘IN_URL’).AsString := Url;
                        pFIBStoredProc1.Params.ParamByName(‘IN_CATEGORY’).AsString := Name;
                        pFIBStoredProc1.Params.ParamByName(‘IN_PLUGIN_NAME’).AsString := PluginName;
                        pFIBStoredProc1.Params.ParamByName(‘IN_DESCRIPTION’).AsString := Description;
                        pFIBStoredProc1.Prepare;
                        pFIBStoredProc1.ExecProc;
                        end;
                        Код
                        Incompatible column/host variable data type.
                        Dynamic SQL error.
                        SQL error code = -303.
                        Arithmetic exception, numeric overflow or string truncation.
                        String right truncation.

                        Пару записей вставились, но при последующих попытках была вышестоящая ошибка. Может проблема в длинной строке?

                        Akella
                        Дата 23.8.2013, 08:44 (ссылка) | (нет голосов) Загрузка .

                        Творец

                        Профиль
                        Группа: Модератор
                        Сообщений: 18485
                        Регистрация: 14.5.2003
                        Где: Корусант

                        Репутация: 29
                        Всего: 329

                        Добавлено через 34 секунды
                        Вероятнее всего, что ты передаёшь в параметр строку более длинную, недели размер поля в базе.

                        Добавлено через 2 минуты и 5 секунд
                        попробуй делать так

                        Код
                        query.ParamByName(‘title’).AsString := copy(title, 1, 512);// 512 — это размер поля в таблице
                        query.ParamByName(‘ADDRESS’).AsString := Copy(ADDRESS, 1, 255); // 255 — это размер поля в таблице

                        Добавлено через 3 минуты и 18 секунд
                        я бы эту строку убрал

                        Цитата
                        pFIBStoredProc1.Prepare;

                        или попробуй поставить её до того, как ты начнёшь присваивать значения параметрам

                        TechnoMag
                        Дата 23.8.2013, 16:20 (ссылка) | (нет голосов) Загрузка .

                        Шустрый

                        Профиль
                        Группа: Участник
                        Сообщений: 122
                        Регистрация: 20.3.2010

                        Репутация: нет
                        Всего: нет

                        Профиль
                        Группа: Участник
                        Сообщений: 39
                        Регистрация: 8.11.2007

                        Репутация: нет
                        Всего: 2

                        Incompatible column/host variable data type. — Вы явно пытаетесь вставить несовместимый тип данных в столбец другого типа! Например, float в int.

                        Этот ответ добавлен с нового Винграда — http://vingrad.com

                        Game-lot
                        Дата 25.8.2013, 21:38 (ссылка) | (нет голосов) Загрузка .

                        1. Публиковать ссылки на вскрытые компоненты

                        2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

                        1. Базы данных (Paradox, Oracle и т.п.)

                        2. Способа доступа (ADO, BDE и т.д.)

                        • Литературу по Дельфи обсуждаем здесь
                        • Действия модераторов можно обсудить здесь
                        • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
                        • Вопросы по реализации алгоритмов рассматриваются здесь
                        • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) — крупнейшем в рунете сборнике материалов по Дельфи
                        • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

                        Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

                        Правила форума «Delphi: Базы данных и репортинг»
                        0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
                        0 Пользователей:
                        « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »

                        [ Время генерации скрипта: 0.1056 ] [ Использовано запросов: 21 ] [ GZIP включён ]

                        Источник

                        PHP PDO: SQLSTATE[HY000]: General error: -303 Dynamic SQL Error SQL error code = -303 conversion error from string

                        I’m connecting to a Firebird 1.5 Database with PHP5.5’s PDO library with the following code

                        the $kod is a string, and the firebird column KOD is a VARCHAR(15)

                        if i write anysort of string inside the $kod variable, it gives me this error:

                        when the variable is empty, or its an integer it works.

                        I have no idea why it is doing this.

                        EDIT:

                        EDIT2: i installed FBscanner on a windows server and watched what kind of SQl was sent to the server and i found out that the SQL was different!

                        and this is a different SQL entirely! This in from this function:

                        and i read that some drivers need closing params, that’s why i put the closeCursor there but it still doesn’t work!

                        Share solution ↓

                        Additional Information:

                        Didn’t find the answer?

                        Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

                        Similar questions

                        Find the answer in similar questions on our website.

                        Write quick answer

                        Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

                        About the technologies asked in this question

                        PHP (from the English Hypertext Preprocessor — hypertext preprocessor) is a scripting programming language for developing web applications. Supported by most hosting providers, it is one of the most popular tools for creating dynamic websites. The PHP scripting language has gained wide popularity due to its processing speed, simplicity, cross-platform, functionality and distribution of source codes under its own license.
                        https://www.php.net/

                        Welcome to programmierfrage.com

                        programmierfrage.com is a question and answer site for professional web developers, programming enthusiasts and website builders. Site created and operated by the community. Together with you, we create a free library of detailed answers to any question on programming, web development, website creation and website administration.

                        Get answers to specific questions

                        Ask about the real problem you are facing. Describe in detail what you are doing and what you want to achieve.

                        Help Others Solve Their Issues

                        Our goal is to create a strong community in which everyone will support each other. If you find a question and know the answer to it, help others with your knowledge.

                        Источник

                        Читайте также:  Error in assertion processing

                        Adblock
                        detector

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Пишу процедуру на вставку данных в таблицу. Несколько параметров имеют тип VARCHAR(20). При запуске процедуры пишет
                        overflow occurred during data type conversion
                        conversion error from syring «pr».

                        «pr»-это проверочная строка, которая явно меньше 20…
                        Откуда берется conversion? И вся ошибка целиком?


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never, а можно увидеть метаданные, таблицы и SP?


                        Записан

                        С уважением, Oldy.

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never, поскольку метеданные засекречены,   Отлично остается только предположить что у вашей базы DEFAULT CHARACTER SET = NONE или UNICODE_FSS.  Если мой склероз мне не изменяет, то и первый и второй случай обрабатывается как UNICODE_FSS, а значит длины VARCHAR нужно увеличить в 2-3 раза. Ну вот собственно и вся телепатия.  Угадал?   Улыбаюсь


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Oldy, пока не знаю, сейчас погляжу  Я шокирован!  Ага


                        Записан

                        не умеете летать- не мучайте метлу!

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Поля таблицы. Кодировка у всего стоит win1251, кроме первых двух полей остальные могут быть пустыми.
                        KOD_DETALI – первичный ключ, not null
                        MAKER — первичный ключ, not null
                        NAME_DETALI
                        POSTAV
                        NALICHIE
                        ZENA_BEZ_SKIDKI
                        VALUT
                        PRIM_V_AVTO
                        RG_GRUPA
                        NOTE

                        CREATE PROCEDURE PRICE_ADD (
                            prkod_detali varchar(30),
                            prmaker varchar(20),
                            prname_detali varchar(50),
                            prpostav varchar(10),
                            prnalichie integer,
                            przena_bez_skidki float,
                            prvalut varchar(4),
                            prprim_v_avto varchar(20),
                            prrg_grupa varchar(2),
                            prnote varchar(50))
                        AS
                        BEGIN
                          INSERT INTO PRICE (    kod_detali,    maker,    name_detali,    postav,    nalichie,    zena_bez_skidki,    valut,    prim_v_avto,    rg_grupa,    note)
                          VALUES (    :prkod_detali,    :prmaker,    :prname_detali,    :prpostav,
                            :prnalichie,    :przena_bez_skidki,    :prvalut,    :prprim_v_avto,
                            :prrg_grupa,    :prnote);
                        END

                        Проверяю процедуру- запускаю на выполнение в списке параметров ввожу для ключевых полей строки “pr” и “pr”. В окне сообщений выходит то же сообщение, о котором я говорила выше.


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never,  при следующих метаданных ошибки нет.  
                        Win98, FireBird WI-V1.5.0.4306 SS

                        CREATE TABLE PRICE )
                        KOD_DETALI VARCHAR)30: CONSTRAINT pk_kod NOT NULL PRIMARY KEY,
                        //первичный ключ может быть только один
                        //поле MAKER может быть уникальным но не PK, т.к. PK KOD_DETALI
                        MAKER VARCHAR)20: NOT NULL,
                        NAME_DETALI VARCHAR)50:,
                        POSTAV VARCHAR)10:,
                        NALICHIE INTEGER,
                        ZENA_BEZ_SKIDKI FLOAT,
                        VALUT VARCHAR)4:,
                        PRIM_V_AVTO VARCHAR)20:,
                        RG_GRUPA VARCHAR)2:,
                        NOTE VARCHAR)50:
                        :

                        CREATE PROCEDURE PRICE_ADD )
                        PRKOD_DETALI VARCHAR)30:,
                        PRMAKER VARCHAR)20:,
                        PRNAME_DETALI VARCHAR)50:,
                        PRPOSTAV VARCHAR)10:,
                        PRNALICHIE INTEGER,
                        PRZENA_BEZ_SKIDKI FLOAT,
                        PRVALUT VARCHAR)4:,
                        PRPRIM_V_AVTO VARCHAR)20:,
                        PRRG_GRUPA VARCHAR)2:,
                        PRNOTE VARCHAR)50::
                        AS
                        BEGIN
                        INSERT INTO PRICE ) kod_detali, maker, name_detali, postav, nalichie, zena_bez_skidki, valut, prim_v_avto, rg_grupa, note:
                        VALUES ) {prkod_detali, {prmaker, {prname_detali, {prpostav,
                        {prnalichie, {przena_bez_skidki, {prvalut, {prprim_v_avto,
                        {prrg_grupa, {prnote:
                        END

                        смотрите, что не так.


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Ачто- в FB не допускается составной первичный ключ?


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never, вполне допустим, только метаданыые будут выглядеть немного по другому:

                        CREATE TABLE PRICE (
                        KOD_DETALI VARCHAR(30) NOT NULL,
                        MAKER VARCHAR(20) NOT NULL,
                        NAME_DETALI VARCHAR(50),
                        POSTAV VARCHAR(10),
                        NALICHIE INTEGER,
                        ZENA_BEZ_SKIDKI FLOAT,
                        VALUT VARCHAR(4),
                        PRIM_V_AVTO VARCHAR(20),
                        RG_GRUPA VARCHAR(2),
                        NOTE VARCHAR(50),
                        CONSTRAINT pk_price PRIMARY KEY (KOD_DETALI, MAKER)
                        );


                        Записан

                        С уважением, Oldy.

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never, и в этом случае ошибки «overflow occurred during data type conversion error from syring ‘pr’.» нет.


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Oldy, но таблица же уже создана, она есть. Я же в данній момент создаю процедуру на вставку данніх в уже готовую таблицу.


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never,

                        …таблица же уже создана…

                        метаданные похожи на те что у меня? (вы же мне их не показываете  Жаль )
                        А процедура: я скопировал ваши метаданные в буфер обмена, вставил их в SQL редактор в IBExpert, выполнил, закоммитил, перешел в раздел процедур, откомпилировал процедуру, выполнил. Во всплывшем окошке «Input Parameters» подставил значения в переменные :prkod_detali и :prmaker. Ok, commit. Ошибок нет. В таблице появились данные с моими значениями в полях kod_detali и maker.


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Хм. Сейчас не проверю- я на работе, а база дома.
                        Oldy, Я сейчас начну ругаться. Я думала-мы уже договорились про «вы» и «ты»… Или пока брудершафта не было- не считается? Отлично  Ага


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Never’чка,  ну не надо ругаться Отлично. От привычек (дурных или хороших), ну очень тяжело избавляться. Улыбаюсь
                        По поводу ошибки: ну никак мне не удается ее симмитировать. Уже в таблице
                        полЯ делал char(x), а в процедуре varchar(x) и наоборот, ну нифигашечки не получается воспроизвести эту ошибу. Так, что пока не получу реальных метаданных этой таблицы (включая команды создания индексов и всего,что к ней относится), и реальных метаданных SP — ни чего более подсказать не смогу.   Жаль


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        Oldy, спасибо, сделаю


                        Записан

                        не умеете летать- не мучайте метлу!

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        SET NAMES WIN1251;

                        CREATE TABLE PRICE )
                            KOD_DETALI       VARCHAR)90: NOT NULL,
                            MAKER            VARCHAR)60: NOT NULL,
                            NAME_DETALI      VARCHAR)50:,
                            POSTAV           VARCHAR)10:,
                            NALICHIE         INTEGER,
                            ZENA_BEZ_SKIDKI  FLOAT,
                            VALUT            VARCHAR)4:,
                            PRIM_V_AVTO      VARCHAR)20:,
                            RG_GRUPA         VARCHAR)2:,
                            NOTE             VARCHAR)50:
                        :;

                        ALTER TABLE PRICE ADD CONSTRAINT PK_PRICE PRIMARY KEY )KOD_DETALI, MAKER:;

                        Это то, что есть по таблице если смотреть скрипт.
                        По твоим шагам делаю все точно так же: Перехожу в раздел процедур, компилирую, Commit, выполнение, ввод параметров в окне (заполняю два первых ключевых параметра строками «pr», без кавычек, остальное оставляю в null), нажимаю ОК- и тут получаю вышеупомянутую строку

                        Overflow occurred during data type conversion.
                        conversion error from string «pr».
                        conversion error from string «pr».

                        До второго commit дело не доходит вообще.


                        Записан

                        не умеете летать- не мучайте метлу!

                        Anonymous

                        Гость


                        Never, воспроизвести ошибку так и не удалось. Извращался как угодно:
                        делал поля в таблице и в процедуре разной размерности, делал поля в таблице и процедуре разного типа (char — varchar) и разной размерности — все проходит восхитительно, ошибок нет. Предлагаю сделать backup/restore базы, и поработать с восстановленной копией. Восстанавливай базу с новым именем (не замещая предыдущую). Посмотри логи которые будет выдавать backup/restore (лучше сохрани их в файлы). После backup/restorе, либо все станет как надо, либо будет найдено место приводящее к этой ошибке. Backup/restore можно делать через IBExpert — меню «Службы»->»Резервирование»|»Восстановление».


                        Записан
                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Гость не гость а Oldy Улыбаюсь


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        После восстановления ругается:
                        Ubsuccessful execution caused by system error that does not preclude successful  execution of subsequent  statements.
                        requires both input and output file names.

                        Чего я там  не так сделала?
                        Ну с резервированием ошибок не было… Окно восстановление. Restore into- ставлю: new database. Database file-  выбираю путь, сохранить как- пишу имя новой базы. Так?
                        А в окне File name что-то  надо ставить?
                        В параметрах General отмечено только commit после каждой таблицы…
                        output- в файл.


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        А в окне File name что-то надо ставить?

                        ПутьИмя backup файла (*.gbk | *.fbk) из которого надо восстановить базу.


                        Записан

                        С уважением, Oldy.

                        Never

                        Команда клуба

                        ua
                        Offline Offline
                        Пол: Женский


                        ставила. Пришет то же самое

                        requires both input and output file names.


                        Записан

                        не умеете летать- не мучайте метлу!

                        Oldy

                        Команда клуба

                        ru
                        Offline Offline
                        Пол: Мужской


                        Я шокирован! О ужас! Какая-то безисходность.  «Требуется оба имени входного и выходного файлов». И это при указанных Database file  и File Name? Получается, что IBExpert «криво» работает? Или мы все-таки говорим о разных моментах?


                        Записан

                        С уважением, Oldy.

                         
                        ShuraGrp
                         
                        (2002-07-25 12:56)
                        [0]

                        Уважаемые Мастера! Помогите разобрать. Есть ХР, в которой собственно и есть insert select. Почему ошибка не пойму.

                        Как видно из текстов ошибок ругается на дату.

                        Ошибки получены в дебагере EMS QuickDesk. Сама процедура из D6 не ругается, но возвращает Null.

                        Если убрать из select условие по дата, то все работает.

                        Может кто подскажет. Буду очень признателен.

                        CREATE PROCEDURE MAKEDEBET (

                        DOC_DATE DATE,

                        SCL INTEGER,

                        PROD INTEGER)

                        RETURNS (

                        SUMDEBET NUMERIC (15, 2))

                        AS

                        declare variable u integer;

                        declare variable us varchar(30);

                        declare variable d varchar(30);

                        begin

                        u = gen_id(GEN_ENTTMP, 1);

                        insert into EntTemp (User_id, prod_id, ent_id, prod_cena, ent_col)

                        select :u, e.prod_id, e.ent_id, e.prod_cena, e.ent_col

                        from entries e

                        where e.ent1_id = 0

                        and e.scl_id = :Scl

                        and e.prod_id = :Prod

                        and e.doc_date <= :DOC_DATE;

                        incompatible column/host variable data type.

                        Dynamic SQL error.

                        SQL error code = -303.

                        Conversion error from string «»2002-07-22″».

                        Пробовал так:

                        begin

                        d = :DOC_DATE;

                        us = gen_id(GEN_ENTTMP, 1);

                        insert into EntTemp (User_id, prod_id, ent_id, prod_cena, ent_col)

                        select cast(:us as integer), e.prod_id, e.ent_id, e.prod_cena, e.ent_col

                        from entries e

                        where e.ent1_id = 0

                        and e.scl_id = :Scl

                        and e.prod_id = :Prod

                        and e.doc_date <= cast(:d as date);

                        An error was found in application program input parameters for the sql statment.

                        Dynamic SQL error.

                        SQL error code = -804.

                        Data type unknown.


                         
                        Alexandr
                         
                        (2002-07-25 13:07)
                        [1]

                        это глюк дебаггера.

                        Ведь дебаггера нету.

                        А то, что есть это эмуляция со своими ограничениями и ошибками.


                         
                        ShuraGrp
                         
                        (2002-07-25 13:56)
                        [2]

                        Ну допустим глюк. Но Null то почему, данные то есть в таблице.


                         
                        Alexandr
                         
                        (2002-07-25 14:06)
                        [3]

                        ты бы хоть текст процедуры полностью привел…

                        а то ведь даже не видно чего там в SUMDEBET попасть должно…


                         
                        ShuraGrp
                         
                        (2002-07-25 14:33)
                        [4]

                        CREATE PROCEDURE MAKEDEBET (

                        DOC_DATE DATE,

                        SCL INTEGER,

                        PROD INTEGER,

                        COL NUMERIC (15, 5),

                        NL_ID INTEGER,

                        DL_ID INTEGER,

                        DOC_ID INTEGER,

                        R INTEGER)

                        RETURNS (

                        SUMDEBET NUMERIC (15, 2))

                        AS

                        declare variable i integer;

                        declare variable u integer;

                        declare variable us varchar(30);

                        declare variable d varchar(30);

                        declare variable Prod_id integer;

                        declare variable Ent_id integer;

                        declare variable Prod_Cena NUMERIC(15, 2);

                        declare variable b CHAR(1);

                        declare variable Ent_Col NUMERIC(15, 5);

                        declare variable Ent_Col_Sum NUMERIC(15, 5);

                        declare variable Curr_Col NUMERIC(15, 5);

                        begin

                        /*Dat = cast(Dat as Date);*/

                        /*


                         
                        ShuraGrp
                         
                        (2002-07-25 14:34)
                        [5]

                        Извиняюсь кодировка подвела, но помоему текст прозрачен


                         
                        Desdechado
                         
                        (2002-07-25 18:22)
                        [6]

                        1. ругается не на дату, а на несовместимость типов данных.

                        2. я бы сделал так

                        for select prod_id, ent_id, prod_cena, ent_col

                        from entries

                        where ent1_id = 0 and scl_id = :Scl and prod_id = :Prod and doc_date <= :DOC_DATE

                        into :prd, :ent, :cena, :col

                        do

                        insert into EntTemp (User_id, prod_id, ent_id, prod_cena, ent_col) values (:u, :prd, :ent, :cena, :col );


                         
                        ShuraGrp
                         
                        (2002-07-26 10:08)
                        [7]

                        2Desdechado © (25.07.02 18:22)

                        А на сколько эта конструкция будет работать медленнее на больших объемах


                         
                        Desdechado
                         
                        (2002-07-26 10:26)
                        [8]

                        тестов не проводил, но рассуждая логически — одинаково. и там, и там строится курсор, содержимое которого запихиваются в таблицу. в твоем варианте в курсор попадает еще постоянное поле из параметра — это дополнительная нагрузка на сервер. в моем варианте идет запись в переменные — тоже нагрузка.

                        при желании всегда можно проверить :)


                         
                        ShuraGrp
                         
                        (2002-07-26 10:41)
                        [9]

                        Кажется я нашел косяк, но все равно не пойму почему:

                        Такая конструкция возвращает нормальные значения

                        select e.prod_id, e.ent_id, e.prod_cena, e.ent_col

                        from entries e

                        where e.ent1_id = 0

                        and e.scl_id = :Scl

                        and e.prod_id = :Prod

                        and e.doc_date <= :DOC_DATE

                        into :prod_id, :ent_id, :prod_cena, :ent_col

                        а такая все Null

                        for select e.prod_id, e.ent_id, e.prod_cena, e.ent_col

                        from entries e

                        where e.ent1_id = 0

                        and e.scl_id = :Scl

                        and e.prod_id = :Prod

                        and e.doc_date <= :DOC_DATE

                        into :prod_id, :ent_id, :prod_cena, :ent_col

                        do insert into EntTemp (User_id, prod_id, ent_id, prod_cena, ent_col)

                        values (:u, :prod_id, :ent_id, :prod_cena, :ent_col);

                        И вполне естественно ругань на Null, тк поля not Null


                         
                        Desdechado
                         
                        (2002-07-26 11:13)
                        [10]

                        гы! так ты хочешь все-в-одном :)

                        ты либо делай выборку с возвращением данных (1), либо заполнение таблицы из другой выборки, которая не возвращается (2). это ж совершенно разные вещи!


                         
                        ShuraGrp
                         
                        (2002-07-26 12:59)
                        [11]

                        Я сделал как посоветовали Desdechado © (25.07.02 18:22)

                        А в чем разные? И все-таки хотелось бы понять с конструкцией insert select?


                        На чтение 3 мин. Просмотров 24 Опубликовано 15.12.2019

                        В настоящее время я работаю над проектом, который позволяет импортировать данные из файла Excel. Я использую программу RazorSQL. Но каждый раз, когда я начинаю импорт,

                        Код ошибки ISC 335544334 ->

                        Использует ли Firebird некоторые специальные форматы даты? Мне действительно нужен ответ, это очень важно. Эта проблема заставляет меня ждать, чтобы продолжить работу.

                        sql import excel firebird razorsql

                        1 ответ

                        1 Решение Mark Rotteveel [2018-08-16 16:09:00]

                        Сообщение об ошибке указывает, что Firebird попытался преобразовать значение строки 2002-07-07 22:00:00.000 в тип данных, отличный от CHAR / VARCHAR и не удалось, потому что строковое значение недействительно для целевого типа данных. Формат, как показано, будет правильно преобразован в TIMESTAMP , а это значит, что вы назначаете это либо неправильному столбцу, либо столбец имеет неправильный тип. Например, DATE не имеет компонента времени на диалекте 3, поэтому преобразование строки с компонентом времени завершится неудачей с этой ошибкой, так же как и преобразование в числовой столбец ( INTEGER , BIGINT и т.д.).

                        Без дополнительной информации о соответствующих столбцах и точном способе импорта невозможно предоставить более конкретный ответ.

                        I am currently working on a project which allows you to import data from an Excel file. I use the Programm RazorSQL. But every time I start the import, the

                        ISC error code 335544334 occures ->

                        Does Firebird use some special Date formats? I really need an answer, it’s very important. This problem keeps me waiting to continue with my work.

                        1 Answer 1

                        The error message indicates that Firebird tried to convert the string value 2002-07-07 22:00:00.000 to a datatype other than CHAR / VARCHAR and did not succeed because the string value is invalid for the target datatype. The format as shown will correctly convert to a TIMESTAMP , which means that you are assigning this either to the wrong column, or the column has the wrong type. For example, a DATE has no time component in dialect 3, so converting a string with a time component will fail with this error, as will converting to a numerical column ( INTEGER , BIGINT , etc).

                        Without more information about the columns involved and the exact method of import, it is not possible to provide a more specific answer.

                        Сейчас я работаю над проектом, который позволяет импортировать данные из файла Excel. Я использую Programm RazorSQL. Но каждый раз, когда я начинаю импорт, в

                        ISC код ошибки 335544334 встречается, ->

                        Используют ли Firebird некоторых специальных форматов даты? Я действительно нужен ответ, это очень важно. Эта проблема заставляет меня ждать, чтобы продолжить свою работу .

                        Сообщение об ошибке указывает на то, что Firebird пытался преобразовать строковое значение 2002-07-07 22:00:00.000 в тип данных, кроме CHAR / VARCHAR и не увенчались успехом , поскольку значение строки является недействительным для целевого типа данных. Формат , как показано правильно преобразовать к TIMESTAMP , что означает , что вы назначаете это либо к неправильному столбца, или столбец имеет неправильный тип. Например, DATE не имеет времени компонент в диалекте 3, так что преобразование строки с временным компонентом потерпит неудачу с этой ошибкой, как будет преобразовывать в числовой колонке ( INTEGER , BIGINT и т.д.).

                        Без дополнительной информации о столбцах, участвующих и точный метод импорта, это не представляется возможным дать более конкретный ответ.

                        Понравилась статья? Поделить с друзьями:

                        Читайте также:

                      • Coreldraw как изменить цвет абриса
                      • Coreldraw как изменить форму фигуры
                      • Coreldraw как изменить размер холста
                      • Coreldraw как изменить размер объекта
                      • Coreldraw как изменить размер изображения

                      • 0 0 голоса
                        Рейтинг статьи
                        Подписаться
                        Уведомить о
                        guest

                        0 комментариев
                        Старые
                        Новые Популярные
                        Межтекстовые Отзывы
                        Посмотреть все комментарии