powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Перестала вызыватся любая функция
7 сообщений из 7, страница 1 из 1
Перестала вызыватся любая функция
    #34083808
SunnyVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объясните, пожалуйста, почему у меня перестала вызываться любая функция
(раньше все работало) (версия: DB2 UDB for iSeries (AS/400) V5R3)

например, вот простая функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE FUNCTION TESTSH.TAN (X DOUBLE) 
RETURNS DOUBLE 
LANGUAGE SQL 
CONTAINS SQL 
NO EXTERNAL ACTION 
DETERMINISTIC 
RETURN SIN(X)/COS(X)

Вызываю функцию в окне Run SQL Scripts
Код: plaintext
 CALL TESTSH.TAN( 15 ); 

И получаю вот такое сообщение:
SQL State: 42884Vendor Code: -440Message: [SQL0440] Routine TAN in TESTSH not found with specified parameters. Cause . . . . . : A function or procedure with the specified name and compatible arguments was not found. Recovery . . . : Specify the correct number and type of parameters on the CALL statement or function invocation. Try the request again.

Вот что нашла в справочнике по сообщениям SQL:
SQL0440N В пути функций не найдено функции с именем "<имя-функции>" и соответствующими аргументами.


Объяснение: Для заданного имени функции "<имя функции>" (где "<имя функции>" может относиться и к методу) менеджер баз данных не может найти функцию или метод, которые можно использовать для реализации этой ссылки. Это может произойти по различным причинам:

Имя "<имя-функции>" задано неверно или такая функция не существует в базе данных.
Использовано имя со спецификаторами, но спецификаторы заданы неправильно.
Использовано имя без спецификаторов и пользовательский путь функций не содержит схему, в которой находится нужная функция или метод.
Задано неверное число аргументов.
Задано правильное число аргументов, но один или несколько аргументов имеют неверный тип данных.
Функция не существует в базе данных с отметкой времени создания до момента связывания пакета (этот вариант относится к статическим операторам).
Не удается найти метод мутатора, соответствующий назначению используемого в операторе UPDATE атрибута. Тип данных нового значения не совпадает с типом данных атрибута и не преобразуется в него.
Действия пользователя: Исправьте ошибку и повторите операцию. Может потребоваться задание правильного доступа к каталогу таблиц, изменение данного оператора, добавление новой функции и/или изменение пути функций.

И так происходит со всеми функциями в различных схемах... ((((
...
Рейтинг: 0 / 0
Перестала вызыватся любая функция
    #34083939
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функции в DB2 не вызываются оператором CALL.
Попробуйте
Код: plaintext
SELECT TESTSH.TAN( 15 ) FROM SYSIBM.SYSDUMMY1;
...
Рейтинг: 0 / 0
Перестала вызыватся любая функция
    #34084089
SunnyVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ага... ясно... спасибки...
функция TAN запустилась...

но при вызове некоторых функций таким образом, например
Код: plaintext
SELECT TESTSH.GET_SEL_EMP('1') FROM SYSIBM.SYSDUMMY1; 

возникает следующаю ошибка:

SQL State: 42704
Vendor Code: -204
Message: [SQL0204] GET_SEL_EMP in TESTSH type *N not found. Cause . . . . . : GET_SEL_EMP in TESTSH type *N was not found. If this is an ALTER TABLE statement and the type is *N, a constraint or partition was not found. If this is not an ALTER TABLE statement and the type is *N, a function, procedure, or trigger was not found. If a function was not found, GET_SEL_EMP is the service program that contains the function. The function will not be found unless the external name and usage name do not match exactly. Examine the job log for a message that gives more details on which function name is being searched for and the name that did not match. Recovery . . . : Change the name and try the request again. If the object is a node group, ensure that the DB2 Multisystem product is installed on your system and create a nodegroup with the CRTNODGRP CL command. If an external function was not found, be sure that the case of the EXTERNAL NAME on the CREATE FUNCTION statement exactly matches the case of the name exported by the service program.

я опять что-то делаю не верно?
...
Рейтинг: 0 / 0
Перестала вызыватся любая функция
    #34084190
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какого типа параметр функции?
...
Рейтинг: 0 / 0
Перестала вызыватся любая функция
    #34084204
SunnyVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
типа CHAR()
...
Рейтинг: 0 / 0
Перестала вызыватся любая функция
    #34084369
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
SELECT TESTSH.GET_SEL_EMP(cast('1' as char( 1 ))) FROM SYSIBM.SYSDUMMY1;
В функциях в DB2 производится жесткий котроль типов параметров и даже varchar там не преобразуется в char неявно.
Строковая константа - это varchar.
...
Рейтинг: 0 / 0
Перестала вызыватся любая функция
    #34086193
SunnyVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mark, огромное спасибо... буду знать... функции заработали...
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Перестала вызыватся любая функция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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