Меню

Код ошибки sql 206

Симптомы

При выполнении запроса с помощью управляемого поставщика для DB2, который входит в состав Microsoft узла Integration Server 2013 запрос может произойти сбой и появляется следующее сообщение об ошибке:

SQLCODE -206

Причина

Эта проблема может возникнуть при использовании класса StringBuilder и оператор разбивается на несколько строк. Класс StringBuilder добавляет дополнительные символы в функции AppendLine . Это приводит к возникновению проблем в средстве синтаксического анализа.

Решение

Информация о накопительном пакете обновления

Исправление, устраняющее эту проблему включено в Накопительное обновление 1 для узла Integration Server 2013.

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе «Относится к».

Нужна дополнительная помощь?

SQL Server error Msg 206, Level 16 is a common error to get when inserting data into a table.

It happens when you’re trying to insert data into a column that is incompatible with the data type you’re trying to insert.

This could happen if you accidentally try to insert data into the wrong column (or even the wrong table). But it could also happen if you incorrectly assume that SQL Server will convert the data for you.

To fix this issue, make sure you’re inserting the correct data type.

Example of Problem Code

Here’s an example of code that results in this error.

INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
VALUES ('2020-04-02', 1, 'Dog food');

Result:

Msg 206, Level 16, State 2, Line 1
Operand type clash: int is incompatible with date

In this case, it’s quite obvious where I’m going wrong, just by looking at the column names and the values I’m trying to insert.

I’m trying to insert values in the wrong order.

The problem is that I’m trying to insert an integer into a date column. Specifically, I’m trying to insert the value 1 into a column called OrderDate.

Of course, it’s not the column name that’s causing the problem. It’s the data type that I’m trying to insert into it.

Here’s the code I used to create the table:

CREATE TABLE Orders (
    OrderId int NOT NULL,
    OrderDate date NOT NULL,
    OrderDesc varchar(255) NOT NULL,
    CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
    );

We can see by the table definition that the OrderDate column uses a date data type.

Blessing in Disguise?

As frustrating as it can be to get an error, sometimes it could be the best thing that ever happened to you.

If the code doesn’t result in an error, we might accidentally insert the wrong data into the database. This would diminish the data integrity of our database.

Imagine that the OrderDate column is a datetime instead of date:

DROP TABLE IF EXISTS Orders;
CREATE TABLE Orders (
    OrderId int NOT NULL,
    OrderDate datetime NOT NULL,
    OrderDesc varchar(255) NOT NULL,
    CONSTRAINT PKOrders PRIMARY KEY CLUSTERED(OrderId, OrderDate)
    );

Now imagine we try to insert the following data into that table:

INSERT INTO Orders(OrderId, OrderDate, OrderDesc) 
VALUES (1, 1, 'Dog food');

Result:

(1 row affected)

Huh? No error?

Exactly. No error. This is because the datetime type is compatible with the int type. In other words, SQL Server took our int value and converted it into a datetime value.

Here’s what our table ends up looking like after that insert operation.

SELECT * FROM Orders;

Result:

+-----------+-------------------------+-------------+
| OrderId   | OrderDate               | OrderDesc   |
|-----------+-------------------------+-------------|
| 1         | 1900-01-02 00:00:00.000 | Dog food    |
+-----------+-------------------------+-------------+

Как исправления нужно внести, чтобы устранить ошибку?
«SQL error populating table model at: Dynamic SQL Error; SQL error code = -206; Column unknown; ACN_NN; At line 1, column 126 [SQLState:42S22, ISC error code:335544578]»

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE OR ALTER PROCEDURE GET_REL_F_NAMES 
RETURNS (RTABLENAME CHAR(31), RFIELDNAME CHAR(31), RFIELDPOSITION INTEGER, RCOUNT INTEGER)  
AS   
DECLARE C CURSOR FOR (SELECT rdb$relation_name FROM rdb$relations WHERE UPPER(rdb$relation_name) LIKE 'A%' ORDER BY RDB$RELATION_NAME ASC);
BEGIN   
OPEN C;   
WHILE (1 = 1) 
DO   
BEGIN     
FETCH C INTO :RTABLENAME;
IF (ROW_COUNT = 0) THEN LEAVE;     
    BEGIN
    FOR 
        EXECUTE statement 'select rdb$field_name, rdb$field_position from rdb$relation_fields where rdb$relation_name = ' || :RTABLENAME || ' order by rdb$field_position asc'
    INTO :RFIELDNAME, :RFIELDPOSITION
      DO    
            BEGIN
                EXECUTE statement 'select count(' || :RFIELDNAME || ') FROM ' || :RTABLENAME || '' INTO :RCOUNT;
              --suspend;
            END
    END
SUSPEND;   
END   
CLOSE C; 
END

Добавлено через 42 минуты
Также такая ошибка: «SQL error populating table model at: multiple rows in singleton select»

Добавлено через 48 минут
Как оформить в select’e вывод rdb$field_name, чтобы он считывался INTO :RFIELDNAME? Вроде бы из-за этого ошибка.

Вот этот фрагмент:

SQL
1
2
EXECUTE statement 'select rdb$field_name, rdb$field_position from rdb$relation_fields where rdb$relation_name = ' || :RTABLENAME || ' order by rdb$field_position asc'
    INTO :RFIELDNAME

Добавлено через 1 час 8 минут
Вопрос отпал. Проблема решена.

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

Modified by: Márson de Paula (marsonluis)

description: I’m trying to insert a record but the error occurs:

can’t format message 13:794 — message file C:Windowsfirebird.msg not found.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
VCST.
At line 1, column 108.

to this SQL:

insert into MOVESTOQUE (CDLOJA, CDPOS, CDPRODUTO, CDHISTORICO, FLGMOVIMENTO, QUANTIDADE, DATA, HORA, QTDEANTERIOR,
QTDEATUAL, NRDOCUMENTO, VLRCUSTOCIMP, CDFORNCLI, LJFORNECEDOR, VLRCUSTMEDCIMP, VLRCUSTMEDCONT,
VLRCONTABIL, VLRSUGERIDO, SEQUENCIA)
values (77, 9, 8994, 15, ‘E’, -1, ‘28.08.2013’, ’15:09:00′, -3,- 3, ‘VCST’,1.1449996948, 0, 0, 7.8600001335144,
7.61999988555908, 8.18000030517578, 12.2700004577637, 3)

Any idea?

=>

I’m trying to insert a record but the error occurs:

can’t format message 13:794 — message file C:Windowsfirebird.msg not found.
Dynamic SQL Error.
SQL error code = -206.
Column unknown.
VCST.
At line 1, column 108.

to this SQL:

insert into MOVESTOQUE (CDLOJA, CDPOS, CDPRODUTO, CDHISTORICO, FLGMOVIMENTO, QUANTIDADE, DATA, HORA, QTDEANTERIOR,
QTDEATUAL, NRDOCUMENTO, VLRCUSTOCIMP, CDFORNCLI, LJFORNECEDOR, VLRCUSTMEDCIMP, VLRCUSTMEDCONT,
VLRCONTABIL, VLRSUGERIDO, SEQUENCIA)
values (77, 9, 8994, 15, ‘E’, -1, ‘28.08.2013’, ’15:09:00′, -3,- 3, ‘VCST’,1.1449996948, 0, 0, 7.8600001335144,
7.61999988555908, 8.18000030517578, 12.2700004577637, 3)

And, this the table’s DDL:

/******************************************************************************/
/*** Following SET SQL DIALECT is just for the Database Comparer ***/
/******************************************************************************/
SET SQL DIALECT 3;

/******************************************************************************/
/*** Tables ***/
/******************************************************************************/

CREATE GENERATOR GEN_MOVESTOQUE;

CREATE TABLE MOVESTOQUE (
CDPOS INTEGER NOT NULL,
CDMOVIMENTO INTEGER NOT NULL,
CDLOJA INTEGER NOT NULL,
CDPRODUTO INTEGER,
CDHISTORICO INTEGER DEFAULT 0,
DATA TIMESTAMP,
HORA VARCHAR(8),
QUANTIDADE FLOAT DEFAULT 0,
FLGMOVIMENTO VARCHAR(1),
QTDEANTERIOR FLOAT,
QTDEATUAL FLOAT,
CDFORNCLI CODIGO /* CODIGO = INTEGER */,
NRDOCUMENTO VARCHAR(20),
VLRCUSTOCIMP VALOR /* VALOR = DECIMAL(18,2) */,
VLRCUSTMEDCIMP VALOR /* VALOR = DECIMAL(18,2) */,
LJFORNECEDOR CODIGO /* CODIGO = INTEGER */,
VLRCUSTMEDUNIT VALOR /* VALOR = DECIMAL(18,2) */,
VLRCUSTMEDCONT VALOR /* VALOR = DECIMAL(18,2) */,
FLGESTORNADO FLAG /* FLAG = VARCHAR(1) */,
VLRCONTABIL VALOR /* VALOR = DECIMAL(18,2) */,
VLRSUGERIDO VALOR /* VALOR = DECIMAL(18,2) */,
FLGALTERADO FLAG /* FLAG = VARCHAR(1) */,
FLGSIST FLAG /* FLAG = VARCHAR(1) */,
MD5 VARCHAR(40),
SEQUENCIA CODIGO /* CODIGO = INTEGER */
);

/******************************************************************************/
/*** Primary Keys ***/
/******************************************************************************/

ALTER TABLE MOVESTOQUE ADD PRIMARY KEY (CDMOVIMENTO, CDPOS, CDLOJA);

/******************************************************************************/
/*** Foreign Keys ***/
/******************************************************************************/

ALTER TABLE MOVESTOQUE ADD FOREIGN KEY (CDPRODUTO) REFERENCES PRODUTOS (CDPRODUTO);
ALTER TABLE MOVESTOQUE ADD FOREIGN KEY (CDPOS, CDLOJA) REFERENCES POS (CDPOS, CDLOJA);
ALTER TABLE MOVESTOQUE ADD FOREIGN KEY (CDHISTORICO) REFERENCES HISTORICOS (CDHISTORICO);

/******************************************************************************/
/*** Indices ***/
/******************************************************************************/

CREATE INDEX XIE1MOVESTOQUE ON MOVESTOQUE (CDLOJA);
CREATE INDEX XIE2MOVESTOQUE ON MOVESTOQUE (DATA);
CREATE INDEX XIE3MOVESTOQUE ON MOVESTOQUE (FLGMOVIMENTO);
CREATE INDEX XIE4MOVESTOQUE ON MOVESTOQUE (CDPRODUTO);
CREATE INDEX XIE5MOVESTOQUE ON MOVESTOQUE (NRDOCUMENTO);
CREATE INDEX XIE6MOVESTOQUE ON MOVESTOQUE (CDFORNCLI);
CREATE INDEX XIE7MOVESTOQUE ON MOVESTOQUE (CDHISTORICO);
CREATE INDEX XIE8MOVESTOQUE ON MOVESTOQUE (CDMOVIMENTO);
CREATE INDEX XIE9MOVESTOQUE ON MOVESTOQUE (CDFORNCLI, LJFORNECEDOR);
CREATE INDEX XIF90MOVESTOQUE ON MOVESTOQUE (CDPOS, CDLOJA);
CREATE INDEX XIF91MOVESTOQUE ON MOVESTOQUE (CDPRODUTO);

Any idea?

    msm.ru

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

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

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

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

    >
    [Firebird] В запросе не определяется поле
    , Рекурсивный запрос не разруливает поле

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



    Сообщ.
    #1

    ,
    18.10.12, 10:04

      Full Member

      ***

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

      Привет. У меня есть иерархическая таблица XXXX. Пытаюсь для нода определить парентов и чайлдов, чтобы произвести вставку в другую таблицу. Однако Firebird 2.1 ругается на:

      Column does not belong to referenced table.
      Dynamic SQL Error.
      SQL error code = -206.
      Column unknown.
      C.ID.
      At line 8, column 46.

      Сам текст запроса: поля есть. Если поменять куски CHILDREN и PARENT_LIST местами, то будет ругаться на то, что нет PT.ID. В чем может быть проблема?

      ExpandedWrap disabled

        MERGE INTO MO_DATAGROUP_LINK DGL USING

        (

        WITH RECURSIVE

        CHILDREN AS (

        SELECT 923 ID FROM RDB$DATABASE

        UNION ALL

        SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID

        ),

        PARENT_LIST AS (

          SELECT PARENTID ID FROM SPRT WHERE ID = 923

          UNION ALL

          SELECT PARENTID ID FROM SPRT T JOIN PARENT_LIST PT ON T.ID = PT.ID)

        SELECT ID FROM PARENT_LIST WHERE ID IS NOT NULL

        UNION ALL

        SELECT ID FROM CHILDREN

        ) PX ON DGL.DATAID = PX.ID AND DGL.DATAGROUPID = 896 AND DGL.TABLENAME = ‘XXXX’

        WHEN NOT MATCHED THEN INSERT (DATAGROUPID, TABLENAME, DATAID) VALUES (:D_VALUE, ‘XXXX’, PX.ID);


      Romkin



      Сообщ.
      #2

      ,
      19.10.12, 15:39

        А где у тебя таблица C? ;)


        spy_



        Сообщ.
        #3

        ,
        22.10.12, 07:11

          Full Member

          ***

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

          Romkin, «JOIN CHILDREN C ON», не?


          Romkin



          Сообщ.
          #4

          ,
          22.10.12, 08:46

            Присоедини псевдоним ко всем полям, оно путается скорее всего


            spy_



            Сообщ.
            #5

            ,
            23.10.12, 04:57

              Full Member

              ***

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

              Если присоединять сюда «SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID» по аналогии с выборкой PARENT_LIST, то толку никакого, к сожалению, та же ошибка. Кстати, если поменять местами блоки CHILDREN и PARENT_LIST как есть, то будет уже ругаться на выборку PARENT_LIST аналогично.


              Игорь Акопян



              Сообщ.
              #6

              ,
              23.10.12, 07:33

                простите, а это что без запятой пишется?

                ExpandedWrap disabled

                  SELECT PARENTID ID FROM


                spy_



                Сообщ.
                #7

                ,
                23.10.12, 14:02

                  Full Member

                  ***

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

                  Игорь Акопян, а почему оно должно писаться с запятой?

                  Добавлено 23.10.12, 14:05
                  Я не понимаю, господа, вы теоретически пытаетесь что-то понять и найти синтаксические ошибки? Не проще ли к себе в IBExpert или FlameRobin скопировать запрос и проверить?
                  Структура таблиц тривиальна:
                  SPRT (ID — int PK, PARENTID — int FK to SPRT)
                  MO_DATAGROUP_LINK (ID — int PK, DATAGROUPID — int, TABLENAME — varchar, DATAID — int)
                  Причем достаточно двух таблиц, т.к. MO_DATAGROUP_LINK.DATAID — это ссылка на SPRT.ID без FK (там FK не нужен по архитектурным причинам).


                  Alex2011



                  Сообщ.
                  #8

                  ,
                  08.11.12, 09:17

                    Member

                    **

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

                    Думаю что проще(или даже НАДО) в хр.процедуре сделать,особенно если там рекурсия.(Разбираться с твоим запросом лень) Я когда-то писал хр.процедуру (с запросом выходил большой гемор-я решил,что это невозможно сделать,хотя может и не так-не претендую на истину в последней инстанции),в которой определял верхнего парента,всех чайдлов,если не ошибаюсь.(давно было,но процедуру найти,думаю, можно) Похоже и тебе что-то аналогичное надо?

                    Сообщение отредактировано: Alex2011 — 08.11.12, 10:14

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

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

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

                    Рейтинг@Mail.ru

                    [ Script execution time: 0,0238 ]   [ 15 queries used ]   [ Generated: 29.01.23, 12:47 GMT ]  

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

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

                    А вот еще интересные материалы:

                  • Яшка сломя голову остановился исправьте ошибки
                  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
                  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
                  • Код ошибки spn 97 fmi 3 камаз расшифровка
                  • Код ошибки spn 97 fmi 3 камаз 65115