Симптомы
При выполнении запроса с помощью управляемого поставщика для 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 | ||
|
Добавлено через 42 минуты
Также такая ошибка: «SQL error populating table model at: multiple rows in singleton select»
Добавлено через 48 минут
Как оформить в select’e вывод rdb$field_name, чтобы он считывался INTO :RFIELDNAME? Вроде бы из-за этого ошибка.
Вот этот фрагмент:
| SQL | ||
|
Добавлено через 1 час 8 минут
Вопрос отпал. Проблема решена.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
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?
|
|
|
|

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

[Firebird] В запросе не определяется поле
, Рекурсивный запрос не разруливает поле
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
|
|
Full Member
Рейтинг (т): 5 |
Привет. У меня есть иерархическая таблица XXXX. Пытаюсь для нода определить парентов и чайлдов, чтобы произвести вставку в другую таблицу. Однако Firebird 2.1 ругается на: Column does not belong to referenced table. Сам текст запроса: поля есть. Если поменять куски CHILDREN и PARENT_LIST местами, то будет ругаться на то, что нет PT.ID. В чем может быть проблема?
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 |
|
|
А где у тебя таблица C? |
|
spy_ |
|
|
Full Member
Рейтинг (т): 5 |
Romkin, «JOIN CHILDREN C ON», не? |
|
Romkin |
|
|
Присоедини псевдоним ко всем полям, оно путается скорее всего |
|
spy_ |
|
|
Full Member
Рейтинг (т): 5 |
Если присоединять сюда «SELECT S.ID FROM SPRT S JOIN CHILDREN C ON C.ID = S.PARENTID» по аналогии с выборкой PARENT_LIST, то толку никакого, к сожалению, та же ошибка. Кстати, если поменять местами блоки CHILDREN и PARENT_LIST как есть, то будет уже ругаться на выборку PARENT_LIST аналогично. |
|
Игорь Акопян |
|
|
простите, а это что без запятой пишется?
SELECT PARENTID ID FROM |
|
spy_ |
|
|
Full Member
Рейтинг (т): 5 |
Игорь Акопян, а почему оно должно писаться с запятой? Добавлено 23.10.12, 14:05 |
|
Alex2011 |
|
|
Member
Рейтинг (т): 1 |
Думаю что проще(или даже НАДО) в хр.процедуре сделать,особенно если там рекурсия.(Разбираться с твоим запросом лень) Я когда-то писал хр.процедуру (с запросом выходил большой гемор-я решил,что это невозможно сделать,хотя может и не так-не претендую на истину в последней инстанции),в которой определял верхнего парента,всех чайдлов,если не ошибаюсь.(давно было,но процедуру найти,думаю, можно) Похоже и тебе что-то аналогичное надо? Сообщение отредактировано: Alex2011 — 08.11.12, 10:14 |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- Базы данных: SQL
- Следующая тема
[ Script execution time: 0,0238 ] [ 15 queries used ] [ Generated: 29.01.23, 12:47 GMT ]



