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

Откуда:
Сообщений: 90
Помогите, плиз, новичку.
Переношу базу c Interbase на DB2 и столкнулся с такой проблемой:
В процедуре используется insert, в котором имя поля совпадает с именем параметра, например:

create procedure p1 (v varchar (20))
LANGUAGE SQL MODIFIES SQL DATA
begin
insert into t1(v) values(v)
end

Как можно разрешить такой конфликт?
19 окт 12, 10:37    [13344849]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
const64
Member

Откуда:
Сообщений: 779
Toshkin,

Варианты:
1. Переименовать параметр
2. Указывать полное имя: insert into t1(v) values(p1.v)
19 окт 12, 11:48    [13345436]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Toshkin,

create procedure p1 (v varchar (20))
LANGUAGE SQL MODIFIES SQL DATA
begin
insert into t1(v) values(p1.v);
end
19 окт 12, 11:53    [13345484]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Toshkin
Member

Откуда:
Сообщений: 90
const64,
Первый вариант не подходит, т.к. таких процедур десятки и база находится в стадии разработки.
Второй вариант возвращает SQLSTATE=42703
19 окт 12, 11:58    [13345537]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Toshkin
Member

Откуда:
Сообщений: 90
да, кстати, ошибка возникает в функции, а не в процедуре (не знаю, принципиально ли это).
19 окт 12, 12:01    [13345579]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Toshkin
Member

Откуда:
Сообщений: 90
Всё разобрался.
Оказалось, это SQLWays ступил - переименовал параметр/поле "COMMENT" в "COMMENT2", а такого поля в таблице нет, естественно.
19 окт 12, 12:14    [13345729]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Toshkin
Member

Откуда:
Сообщений: 90
create procedure p1 ()
LANGUAGE SQL MODIFIES SQL DATA
begin
DECLARE v varchar (20)
SET v = ' '
insert into t1(v) values(v)
end

Возвращаюсь к теме:
А что делать если имя поля совпадает с именем переменной?
24 окт 12, 14:13    [13368626]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Toshkin
А что делать если имя поля совпадает с именем переменной?
create procedure p1(v varchar(20))
l1: begin
declare v varchar(20);
set l1.v='';
insert into t1(v) values (p1.v);
end
24 окт 12, 16:31    [13369828]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по написанию процедур  [new]
Toshkin
Member

Откуда:
Сообщений: 90
Mark Barinstein
Toshkin
А что делать если имя поля совпадает с именем переменной?
create procedure p1(v varchar(20))
l1: begin
declare v varchar(20);
set l1.v='';
insert into t1(v) values (p1.v);
end

Спасибо, но слишком мудрено..
Да и параметры процедуры я не могу менять.
24 окт 12, 17:39    [13370302]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить