Ошибка sql error code 206

Симптомы

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

SQLCODE -206

Причина

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

Решение

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

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

Статус

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

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

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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

Change your case, as it looks like your database layer is automatically quoting it if you use CamelCase.

A quick test in a Firebird 2.5 database here shows:

SQL> select t1.usuario, t1.NoExisto from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-T1.NOEXISTO
-At line 1, column 23


SQL> select t1.usuario, "t1.NoExisto" from sg_usuario t1;
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-t1.NoExisto
-At line 1, column 34

As you see, the database engine generates an error with camel case only when it gets the SQL query using quotes.

I suggest you to try myfield_id or use the correct case you have in your field name.

    select 
        table1.pkfield1,
        table1.field_no,
        table1.fk1_id,
        table1.fk2_id,
        table1.myfield_id, 
        table1.bfield,
        table2.desc1,
        table2.desc2,
        table2.desc3
    from table2
    right outer table1 on (table2.pk1_id = table1.fk1_id)
    Order by table1.fk1_id, table1.field_no desc

�����
����� ������ ���������?

����� UPDATE ������� �������� �� �����, ����� �������� �������� ����� ����, ���� ��� ���������, �� ������ ����� ��������� �� �� ����(�), �������� ��������(��) ����������� � �� ��������� ����.

UPDATE
STOIM = 1000

� ���������� ������ «Dynamic SQL Error. SQL error code = -206. Column unknown BILET_CENA_SUBSID_NV».

Источник

iBase.ru Forum

Форум по InterBase, Firebird и Yaffil

  • Темы без ответов
  • Активные темы
  • Поиск
  • Наша команда

Проблема с простым запросом

Проблема с простым запросом

Сообщение SeGun » 14 янв 2012, 21:59

Скачал Firebird-2.5.1.26351_1_Win32
Среда Delphi 7
Пытаюсь выполнить запрос
DM1.QAnketa_Rep.SQL.Text:=’SELECT country, count(country) FROM TESTS WHERE DZT Between ‘+’»‘+SD1+’»‘+’ AND ‘+’»‘+SD2+’»‘+’ GROUP BY COUNTRY’;
Где SD1 и SD2
SD1:=DateToStr(Form2.DateTimePicker1.DateTime);
SD2:=DateToStr(IncDay((Form2.DateTimePicker2.DateTime),1));
В ответ получаю сообщение:
EIBInterBase error
Dynamic SQL Error
SQL Error Code = -206 column UnKnown
14.12.11 <Это дата из базы поле DZT>
at line 1 column 72
Хотя такой запрос:
select country, count(country) from tests where dzt between ‘09.01.12’ and ‘09.01.12’ group by country
Успешно возвращает результат в IBExpert

Re: Проблема с простым запросом

Сообщение kdv » 14 янв 2012, 22:51

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

собственно, по проблеме — используйте компонент IBSQLMonitor или отладчик, чтобы увидеть, какой запрос на самом деле находится в SQL.Text. Вы уверены, что там то же самое, что вы выполняете в IBExpert? А там не то же самое, там вот что

select country, count(country) from tests where dzt between «09.01.12» and «09.01.12» group by country

а двойные кавычки, как известно, в третьем диалекте служат для обрамления «квотируемых идентификаторов»
http://www.ibase.ru/ibfaq.htm#dial

Re: Проблема с простым запросом

Сообщение SeGun » 14 янв 2012, 23:18

Re: Проблема с простым запросом

Сообщение kdv » 15 янв 2012, 14:27

Источник

Sql error code 206 что это значит

на форме вешаю DBGrid и DataSource.
прописываю:

На DataModule2 положил IBQuery1,IBTransaction1,IBDataBase1.
связал их

Datamodule2.IBDatabase1.DefaultTransaction:=Datamo dule2.IBTransaction1;
DataModule2.IBDatabase1.DatabaseName:=(«F:WORKED IniNAKLAD.GDB»);
DataModule2.IBTransaction1.DefaultDatabase:=Datamo dule2.IBDatabase1;
DataModule2.IBQuery1.Database:=Datamodule2.IBDatab ase1;
IBQuery1.SQL.Add(«SELECT * FROM TypeProd»);

Происходит ошибка:
Dynamic SQL Error
SQL Error Code =-204
Table Unknown
TYPEPROD

Хотя таблица TypeProd есть в базе Naklad.GDB . Что то немогу понять, почему происходит ошибка? Ведь SQL запрос правильный.


tesseract © ( 2007-10-01 10:46 ) [1]


> Хотя таблица TypeProd есть в базе Naklad.GDB . Что то немогу
> понять, почему происходит ошибка? Ведь SQL запрос правильный.
> ..

А права на её чтение есть ?


Дмитрий Иванович ( 2007-10-01 11:27 ) [2]

я еще начинающий, как можно узнать есть ли права?


Desdechado © ( 2007-10-01 11:46 ) [3]

Подключиться SYSDBA и сделать GRANT


Дмитрий Иванович ( 2007-10-01 12:19 ) [4]

Подскажите пожалуйста способы задания прав на базу данных в InteBase.

На конкретную таблицу будет вроде так:

GRANT ALL ON OtpProizv TO PUBLIC

В документации все есть.
Не обязательно ALL, не обязательно PUBLIC. Скорее, вредно.


Дмитрий Иванович ( 2007-10-01 12:53 ) [6]

я понимаю что не обязательно, можно и SELECT, UPDATE, INSERT,DELETE. и т.д. Просто тяжело с этим всем разобраться самому, хочу что бы на форуме толковые люди подсказали.


Дмитрий Иванович ( 2007-10-01 12:55 ) [7]

А еще вопрос, можно ли через IBConsole назначить привилегии на базу данных?


Johnmen © ( 2007-10-01 12:55 ) [8]

Права здесь непричем. Если бы было дело в них, ошибка была бы другой.
В данном случае нету таблицы.


Johnmen © ( 2007-10-01 12:57 ) [9]

Читать от корки www.ibase.ru
И не задавать вопросов уровня «мне лень смотреть в документацию, подскажите мне быстренько».

Есть подозрения, что БД создана в 3-м диалекте, а там имена регистрозависимые.

Johnmen © (01.10.07 12:55) [8]
Да, подзабыл я этот момент в FB. В Оракле как раз дает «таблица не найдена», если нет прав на нее.


DrPass © ( 2007-10-01 15:06 ) [11]


> Хотя таблица TypeProd есть в базе Naklad.GDB

А попробуй SELECT * FROM «TypeProd»


Дмитрий Иванович ( 2007-10-01 16:27 ) [12]

> А попробуй SELECT * FROM «TypeProd»

происходит такая же ошибка(

Начал создавать поновому БД. Столкнулся с такой ошибкой(при создании таблицы):

Dynamic SQL Error
SQL error code = -206
Column unknown
NEW.MANID
Statement: CREATE TRIGGER «BEF_INS_OtpRazr» FOR «OtpRazr»
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.ManID=GEN_ID(GEN_OtpRazr,1);
END

CREATE TABLE «OtpRazr»
(
«ManID» Integer NOT NULL,
«family» VARCHAR(100) CHARACTER SET WIN1251 NOT NULL,
Primary key («ManID»)
);

CREATE GENERATOR GEN_OtpRazr

SET GENERATOR GEN_OtpRazr To 0

SET TERM!! ;
CREATE TRIGGER «BEF_INS_OtpRazr» FOR «OtpRazr»
ACTIVE BEFORE INSERT
AS
BEGIN
NEW.ManID=GEN_ID(GEN_OtpRazr,1);
END!!
SET TERM; !!

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


Desdechado © ( 2007-10-01 16:29 ) [13]

ManID возьми в кавычки. И читай доки по третьему диалекту.


Дмитрий Иванович ( 2007-10-01 17:24 ) [14]

Большое спасибо за помощь

или в CREATE TABLE все имена пиши без кавычек


Дмитрий Иванович ( 2007-10-01 18:34 ) [16]

>> В данном случае нету таблицы.

Да есть же таблица(вернее, она существует)! В чем может быть дело, я даже представить немогу.


DrPass © ( 2007-10-01 20:10 ) [17]


> Да есть же таблица(вернее, она существует)! В чем может
> быть дело, я даже представить немогу.

Чудес не бывает. По крайней мере, в компьютере. Если существует, значит, ты просто неправильно указываешь имя. Имей в виду, что в третьем диалекте, если ты при создании объектов задаешь их названия в кавычках, они становятся чувствительными к регистру


Дмитрий Иванович ( 2007-10-01 20:58 ) [18]

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

ВОТ ОНО). Я знал про регистры, но вот как то забыл.


Desdechado © ( 2007-10-01 21:13 ) [19]

Ты через раз читаешь? Я тебе еще в Desdechado © (01.10.07 13:55) [10] сказал об этом, потом в DrPass © (01.10.07 15:06) [11] намекнули, потом в Desdechado © (01.10.07 16:29) [13] добавили.
Нельзя ж так тормозить.

Источник

Firebird ошибка код ошибки = -206 столбец неизвестен

Я использую IBDac с Delphi для подключения к Firebir db, и вдруг, когда я попытался запустить программное обеспечение, я получил эту ошибку

Динамический SQL ErrorSQL код ошибки = -206 столбец неизвестен table1.MyField_ID в строке 6, колонка 18

ошибка появляется, когда я пытаюсь открыть набор данных

колонна, конечно, существует. это внешний ключ к другой таблице. Я действительно не знаю, почему я получаю эту ошибку !! вот SQL, который я использовал в компоненте:

1 ответ

Этот запрос выдает ошибку на firebird, как устранить эту ошибку? SELECT EMPNO,SAL FROM EMP E where EMPNO = (SELECT MAX(DEPTNO) FROM DEPT D WHERE E.ENAME NOT like (SELECT TOP 1 ENAME FROM emp E1 WHERE E1.EMPNO=D.DEPTNO)) OR 1 = (SELECT MAX(DEPTNO) FROM DEPT D WHERE E.ENAME like.

Это то, что я делаю, чтобы получить записи из базы данных Firebird с помощью Codeigniter: $columns = [ ‘job.JOBID AS Id’, ‘job.ORDERID AS orderID’, ‘suburb.LONGITUDE AS Longitude’, ‘suburb.LATITUDE AS Latitude’, ‘suburb.LCNAME’, ‘address.TOWN’, ]; $this->db->select($columns);.

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

Быстрый тест в базе данных Firebird 2.5 здесь показывает:

Как вы видите, компонент database engine генерирует ошибку с регистром camel только тогда, когда он получает запрос SQL с использованием кавычек.

Я предлагаю вам попробовать myfield_id или использовать правильный регистр, который у вас есть в имени поля.

Похожие вопросы:

Моя таблица имеет такую структуру T_user(usern,pass,realname: varchar(50); я новичок в Firebird и хочу выполнить следующие операторы, но получаю эту ошибку: if (select Count(*) as cnt FROM T_USER.

У меня есть база данных firebird, которую мне нужно воссоздать. Он содержит внешнюю функцию UDF. Я сделал дамп SQL структуры DB с помощью IB Expert: DECLARE EXTERNAL FUNCTION LPAD CSTRING(255).

До сих пор я использовал Xdebug Eclipse 3 месяца. И он работает очень хорошо. Однако я получил проблему Xdebug, которая называется DBGp Response Error: eval:=206 msg:error evaluating code ( в.

Этот запрос выдает ошибку на firebird, как устранить эту ошибку? SELECT EMPNO,SAL FROM EMP E where EMPNO = (SELECT MAX(DEPTNO) FROM DEPT D WHERE E.ENAME NOT like (SELECT TOP 1 ENAME FROM emp E1.

Это то, что я делаю, чтобы получить записи из базы данных Firebird с помощью Codeigniter: $columns = [ ‘job.JOBID AS Id’, ‘job.ORDERID AS orderID’, ‘suburb.LONGITUDE AS Longitude’, ‘suburb.LATITUDE.

Я начинаю говорить, что я новичок в database, sql и тому подобном, так что, вероятно, синтаксис кода неверен. Мне нужно извлечь некоторые данные из трех таблиц в базе данных firebird. Я попробовал.

У меня возникла проблема, когда я пытался выбрать данные из базы данных Firebird, вот мой код: string SQLCash = SELECT sum(t2.Cash-Change) + FROM dbFBHdr t1, dbFBCollection t2 + WHERE t1.Branch =.

Ниже у меня есть скрипт в Ostendo (an ERP), который работает на базе данных firebird. Сценарий написан в Pascal. Он возвращает ошибку Firebird SQL: код ошибки -104, токен неизвестен, ’13/04/2018′ в.

Я использую Firebird 2.5 и узел-firebird 0.8.6. Мне приходится запускать файлы SQL с несколькими хранимыми процедурами, но я всегда получаю ошибки, подобные приведенным ниже Ошибка: динамическая.

Я создаю веб-сервис для базы данных firebase. Мне нужно выполнить запрос к процедуре firebird. Я делаю это, используя PHP с PDO таким образом (это мой обобщенный код): $instalacion =.

Источник

Adblock
detector

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    |
+-----------+-------------------------+-------------+

Симптомы

При выполнении запроса с помощью управляемого поставщика для 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 ]  

                    Понравилась статья? Поделить с друзьями:
                  • Ошибка sql 1366 incorrect string value
                  • Ошибка spn 1382 fmi 1 камаз евро 5
                  • Ошибка sql error code 204 table unknown
                  • Ошибка sql 1366 incorrect integer value
                  • Ошибка spn 1378 fmi 31