Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема с запуском функции / 10 сообщений из 10, страница 1 из 1
16.11.2006, 17:18
    #34134287
Bean
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Создаю табличную ф-ю:
Код: plaintext
1.
2.
3.
create function ftr(cgh char( 20 ))
returns table(code int, fio char( 20 ), age int)
return select code, fio, age from employers where employers.depatment=cgh
DB20000I  Команда SQL выполнена успешно
.

Запускаю её:
Код: plaintext
1.
2.
values ftr('managenent')
SQL0440N  Не найдено авторизованной подпрограммы "FTR" типа "FUNCTION" с 
совместимыми аргументами.  SQLSTATE= 42884 

при этом:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select * from employers

CODE        FIO                  DEPATMENT            AGE        
----------- -------------------- -------------------- -----------
         123  Иванов               Работа с клиентами             25 
         124  Петров               Маркетинг                      27 
         125  Сидоров              Планирование                   35 
         126  Липова               managenent                     42 

   4  записей выбрано.
Из-за чего такое присходит?
...
Рейтинг: 0 / 0
16.11.2006, 17:39
    #34134381
nkulikov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Объяви лучше как varchar
...
Рейтинг: 0 / 0
16.11.2006, 18:06
    #34134497
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Код: plaintext
select * from table(ftr(cast('managenent' as char( 20 )))) t
...
Рейтинг: 0 / 0
16.11.2006, 18:21
    #34134546
Bean
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Код: plaintext
1.
2.
3.
select * from table(ftr(cast('managenent' as char( 20 ))))
SQL0104N  Обнаружен неправильный элемент "END-OF-STATEMENT" после текста 
"nent' as char(20))))".  Список правильных элементов: "<correlation_name>".  
SQLSTATE= 42601 
...
Рейтинг: 0 / 0
16.11.2006, 18:22
    #34134549
Bean
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
А, всё, получилось, спасибо
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.09.2013, 11:47
    #38409524
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE OR REPLACE FUNCTION in_dekret(flag In number) RETURN result is

  result varchar2(120);
BEGIN
  FOR rec IN (SELECT fio, ddate FROM test_1 WHERE flag = 1) LOOP
    result := CONCAT(rec.fio, rec.ddate);
    INSERT INTO messages (text) VALUES (result);
  END LOOP;
  return;
END in_dekret;



Выдает ошибку в первой строке:
1. pls 00320: описание типа этого выражения незавершено или выполнено неверно
Подскажите как устранить ошибку
...
Рейтинг: 0 / 0
27.09.2013, 12:20
    #38409599
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Если в про DB2 в режиме совместимости с Oracle, то:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE OR REPLACE FUNCTION in_dekret(flag In number) 
RETURN result varchar2(120) 
is
  result varchar2(120);
BEGIN
  FOR rec IN (SELECT fio, ddate FROM test_1 WHERE flag = 1) 
  LOOP
    result := CONCAT(rec.fio, rec.ddate);
    INSERT INTO messages (text) VALUES (result);
  END LOOP;
  return;
END in_dekret;
...
Рейтинг: 0 / 0
27.09.2013, 13:09
    #38409722
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
Mark Barinstein,

в таком случае выдает ошибку 00103 Встретился символ "Begin"
...
Рейтинг: 0 / 0
27.09.2013, 14:44
    #38409930
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
шК0ДЕР,

Вы из какой программы создаёте функцию?
Какие версия и фикспак DB2?
Что выдает на сервере команды:
db2set DB2_COMPATIBILITY_VECTOR
db2 get db cfg for mydbname | grep "compatibility"
...
Рейтинг: 0 / 0
27.09.2013, 14:54
    #38409961
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с запуском функции
CREATE OR REPLACE FUNCTION in_dekret(in_flag In number) RETURN varchar2 IS
result varchar2(120);
BEGIN
FOR rec IN (SELECT t.fio, t.ddate FROM test_1 t WHERE t.flag = 1) LOOP
result := CONCAT(rec.fio, rec.ddate);
INSERT INTO messages (text) VALUES (result);
END LOOP;
return result;
COMMIT;
END in_dekret;


заработало :)
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема с запуском функции / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]