Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 ошибка при выполнении процедуры  [new]
Павел Гужанов
Member

Откуда: Наро-Фоминск
Сообщений: 493
Создаю вот такую процедуру:
CREATE PROCEDURE "GUZHANOV"."MOVE_MONEY" (
    IN TABLE_NAME1	VARCHAR(20),
    IN DATE_START	DATE,
    IN DATE_END	DATE )
  SPECIFIC "GUZHANOV"."MOVE_MONEY"
  LANGUAGE SQL
  NOT DETERMINISTIC
  EXTERNAL ACTION
  MODIFIES SQL DATA
  CALLED ON NULL INPUT
  INHERIT SPECIAL REGISTERS
BEGIN
declare saldo1 decimal(22,2);
declare saldo2 decimal(22,2);
DECLARE dynSQL varchar(600);

  FOR GetName as select distinct name from operation.operation
    where ID in ( select ID_OPERATION from OPERATION.ACCOUNT )
    or ID in ( select ID_OPERATION from OPERATION.INPAYMENT )
    or ID in ( select ID_OPERATION from OPERATION.TRANSACTION ) group by name
  DO
  
    SET SALDO1 = (select sum(ot.value) as v from operation.transaction ot 
    where ot.value_date between date(DATE_START) and date(date_end)  
    and ot.id_account_debet is null and ot.id_operation in 
    (select id from operation.operation where name = getname.name));
  
    SET SALDO2 = (select sum(ot.value) as v from operation.transaction ot 
    where ot.value_date between date(DATE_START) and date(date_end)  
    and ot.id_account_debet is not null and ot.id_operation in 
    (select id from operation.operation where name = getname.name));
  
    SET dynSQL = 'insert into '||TABLE_NAME1||' (name, summ) values ('|| getname.name ||', '||decfloat(saldo1-saldo2)||')';
    EXECUTE IMMEDIATE dynSQL;
  
  END FOR;
END

Пытаюсь ее выполнить, передаю параметры при запуске, TABLE_NAME1 = guzganov.temptable. Но получаю ошибку
ERROR [22004] [IBM][DB2/NT64] SQL0087N Host variable "" is a structure used where structure references are not permitted. SQLSTATE=22004

Подскажите, как с этим бороться?
10 мар 10, 16:41    [8457018]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при выполнении процедуры  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4947
Павел Гужанов,

db2 "? SQL0087N"
SQL0087N A null value was specified in a context where a null value is not allowed.

Т.е. у вас встречается NULL по крайней мере в одном из getname.name, saldo1, saldo2.
10 мар 10, 17:28    [8457460]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при выполнении процедуры  [new]
Павел Гужанов
Member

Откуда: Наро-Фоминск
Сообщений: 493
спасибо, помогло
11 мар 10, 11:07    [8460123]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить