powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как написать хранимую процедуру Insert ?
6 сообщений из 6, страница 1 из 1
Как написать хранимую процедуру Insert ?
    #36697877
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.
Мне необходимо написать процедуру для добавления данных в таблицу. Раньше не работал в DB2.
Для старта прошу помочь на примере с данной процедурой дальше я уже сам разберусь.
Написал процедуру
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE add_makets
(IN pMAK_ID INTEGER, IN pMSG_ID SmallInt, IN pID_DPL INTEGER, IN pDDMM CHAR( 4 ), IN pNUM_MAK CHAR( 3 ))
LANGUAGE SQL
BEGIN
INSERT INTO DOCS.MAKETS(MAK_ID, MSG_ID, ID_DPL, DDMM, NUM_MAK)
VALUES (pMAK_ID, pMSG_ID, pID_DPL, pDDMM, pNUM_MAK);
END 

пишет ошибку:
[DB@/NT] SQL0104N Обнаружен неправельный элемент "END" после ", DDMM, NUM_MAK) ". Список правельных элементов "<psm_semicolon>". LINE NUMBER =6. SQLSTATE=42 601
...
Рейтинг: 0 / 0
Как написать хранимую процедуру Insert ?
    #36697935
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Надо символ завершения команды поменять на какой-то другой, отличный от ';' (например, на @ ).
В DB2 Command Editor оно ставится в поле 'Statement termination character', в DB2 Command Window, если процедура в файле my_file.sql, то:
db2 -t d@ -f my_file.sql

И делать так:

CREATE PROCEDURE add_makets
(IN pMAK_ID INTEGER, IN pMSG_ID SmallInt, IN pID_DPL INTEGER, IN pDDMM CHAR(4), IN pNUM_MAK CHAR(3))
LANGUAGE SQL
BEGIN
INSERT INTO DOCS.MAKETS(MAK_ID, MSG_ID, ID_DPL, DDMM, NUM_MAK)
VALUES (pMAK_ID, pMSG_ID, pID_DPL, pDDMM, pNUM_MAK);
END @
...
Рейтинг: 0 / 0
Как написать хранимую процедуру Insert ?
    #36697939
Vladimir Kiselev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AzekeПривет.
Написал процедуру
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE add_makets
(IN pMAK_ID INTEGER, IN pMSG_ID SmallInt, IN pID_DPL INTEGER, IN pDDMM CHAR( 4 ), IN pNUM_MAK CHAR( 3 ))
LANGUAGE SQL
BEGIN
INSERT INTO DOCS.MAKETS(MAK_ID, MSG_ID, ID_DPL, DDMM, NUM_MAK)
VALUES (pMAK_ID, pMSG_ID, pID_DPL, pDDMM, pNUM_MAK);
END 

Запускайте скрипт командой, например:
db2 -td@ -f script.scr
но сначала после END добавьте @
по умолчанию, символ завершения ';', а он у Вас встречается в теле процедуры, просто надо его переопределить, что и делает ключ -td@
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE PROCEDURE add_makets
(IN pMAK_ID INTEGER, IN pMSG_ID SmallInt, IN pID_DPL INTEGER, IN pDDMM CHAR( 4 ), IN pNUM_MAK CHAR( 3 ))
LANGUAGE SQL
BEGIN
INSERT INTO DOCS.MAKETS(MAK_ID, MSG_ID, ID_DPL, DDMM, NUM_MAK)
VALUES (pMAK_ID, pMSG_ID, pID_DPL, pDDMM, pNUM_MAK);
END@
...
Рейтинг: 0 / 0
Как написать хранимую процедуру Insert ?
    #36698054
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создал файл. В нем посадил следующий скрипт
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
connect to opil user db2admin using iom;

CREATE PROCEDURE add_makets
(IN pMAK_ID INTEGER, IN pMSG_ID SmallInt, IN pID_DPL INTEGER, IN pDDMM CHAR( 4 ), IN pNUM_MAK CHAR( 3 ))
LANGUAGE SQL
BEGIN
INSERT INTO DOCS.MAKETS(MAK_ID, MSG_ID, ID_DPL, DDMM, NUM_MAK)
VALUES (pMAK_ID, pMSG_ID, pID_DPL, pDDMM, pNUM_MAK);
END@

connect reset;

запускаю его в командной строке Пуск ->Выполнить набикаю db2cmd в открывшейся командной строке пишу db2 -td@ -f с:\my_file.sql выдает ошибку:
...
Рейтинг: 0 / 0
Как написать хранимую процедуру Insert ?
    #36698118
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Azekeсоздал файл. В нем посадил следующий скрипт ...Все команды надо завершать символом @ (исключая те, которые внутри процедуры), а не только CREATE PROCEDURE:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
connect to opil user db2admin using iom@

CREATE PROCEDURE add_makets
(IN pMAK_ID INTEGER, IN pMSG_ID SmallInt, IN pID_DPL INTEGER, IN pDDMM CHAR( 4 ), IN pNUM_MAK CHAR( 3 ))
LANGUAGE SQL
BEGIN
INSERT INTO DOCS.MAKETS(MAK_ID, MSG_ID, ID_DPL, DDMM, NUM_MAK)
VALUES (pMAK_ID, pMSG_ID, pID_DPL, pDDMM, pNUM_MAK);
END@

connect reset@
...
Рейтинг: 0 / 0
Как написать хранимую процедуру Insert ?
    #36698144
Azeke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Mark Barinstein и Vladimir Kiselev получилось теперь разобрался.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Как написать хранимую процедуру Insert ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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