execute statement литерал странность

Запросы, планы, оптимизация запросов, ...

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

Ответить
Dreamer
Сообщения: 10
Зарегистрирован: 20 авг 2007, 21:50

execute statement литерал странность

Сообщение Dreamer » 26 сен 2007, 13:55

обнаружил такую проблему, пусть есть проца возвращающая набор состоящий из одного литерала 'qwerty':

Код: Выделить всё

create procedure test
returns (c varchar(100))
as
begin
  for
     execute statement 'select ''qwerty'' from rdb$database'
  into
     :c
  do
      suspend;
end
тогда запрос:

Код: Выделить всё

select * from test
вызовет ошибку: variable type (position 1) in EXECUTE ... does not match returned column type.

В чем дело - литералы в динамическом запросе объявляются как-то по другому ?[/code][/quote]

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

Сообщение kdv » 26 сен 2007, 15:42

выполни select 'querty' from rdb$database, и посмотри на тип столбца.

Dreamer
Сообщения: 10
Зарегистрирован: 20 авг 2007, 21:50

Сообщение Dreamer » 26 сен 2007, 16:40

и точно, тип CHAR(6). спасибо.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 26 сен 2007, 18:00

kdv писал(а):выполни select 'querty' from rdb$database, и посмотри на тип столбца.
Кстати, а почему у меня на 2.0.3 не ругается?

Ответить