Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Накатывание параметризированных скриптов в db2 - чем? / 7 сообщений из 7, страница 1 из 1
03.03.2008, 15:47
    #35167367
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
Есть база на нестандартном порте (это исходное условие, менять нельзя)
К ней нужно подконнектиться и залить параметризованный скрипт - создание ряда хранимых процедур.

Вопрос: чем это сделать? Перепробовал несколько программ, проблема - то нестандартный порт не понимает (ems db2 manager lite), то параметры в скрипте не понимает (например, ibm data studio), то с разделителями после каждой процедуры проблемы (aqua studio)! Control center - так тот просто какой-то глючный...

Самая простая програмка - db2 manager lite, но когда я пытаюсь зарегить базу на моем порте (51000), то оно вначале автоматически создает узел на порту 50000 и постоянно сует зарегенную базу туда, оставляя нод с портом 51000 пустым :( Да еще и exceptions валит...

Если кто имел успешный опыт с накаткой скриптов в каком-либо бесплатном продукте - приведите пример с разделителями, плз...
...
Рейтинг: 0 / 0
03.03.2008, 16:08
    #35167442
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
1. У вас db2 client на клиентской машине стоит?
2. "Залить" - это выполнить последовательность sql команд?
2. Пример скрипта приведите с параметрами.
...
Рейтинг: 0 / 0
03.03.2008, 16:33
    #35167555
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
Клиент на клиентской, коненкчусь через citrix к удаленной базе и дальше обращаюсь к адресу из локальной сети, где и находится база (кстати, там сервер AIX)

Пример скрипта:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
------------------------------------------------------------------------------------------------------------------------
-- Date Created: 28.02.2008
------------------------------------------------------------------------------------------------------------------------

DROP PROCEDURE WIZARD.ROLE_INSERT;
DROP PROCEDURE WIZARD.ROLE_UPDATE;
DROP PROCEDURE WIZARD.ROLE_DELETE;
DROP PROCEDURE WIZARD.ROLE_LOADBYID;
DROP PROCEDURE WIZARD.ROLE_LOADALL;
DROP PROCEDURE WIZARD.ROLE_LOADFORVIEW;

------------------------------------------------------------------------------------------------------------------------
-- 												Insert
------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE WIZARD.ROLE_INSERT(
	INOUT inout_ID INTEGER,
	IN in_NAME VARCHAR( 40 ),
	IN in_DESCRIPTION CLOB,
	IN in_THROWNTIME TIMESTAMP,
	IN in_LOGINID INTEGER
	)
	MODIFIES SQL DATA
	LANGUAGE SQL
BEGIN ATOMIC
	DECLARE vLog_ID INTEGER;

	INSERT INTO WIZARD.ROLE (
			NAME,
			DESCRIPTION
		)
	VALUES (
			in_NAME,
			in_DESCRIPTION
		);

	SET inout_ID = IDENTITY_VAL_LOCAL();

	CALL WIZARD.EventLog_WizardInsert(
		vLog_ID,
		'Insert into ROLE table',
		in_THROWNTIME,
		in_LOGINID,
		 1 ,
		 1 ,
		inout_ID
		);
END;

------------------------------------------------------------------------------------------------------------------------
-- 												Update
------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE WIZARD.ROLE_UPDATE(
	IN in_ID INTEGER,
	IN in_NAME VARCHAR( 40 ),
	IN in_DESCRIPTION CLOB,
	IN in_THROWNTIME TIMESTAMP,
	IN in_LOGINID INTEGER
	)
	MODIFIES SQL DATA
	LANGUAGE SQL
BEGIN ATOMIC
	DECLARE vLog_ID INTEGER;

	UPDATE WIZARD.ROLE SET
		NAME = in_NAME,
		DESCRIPTION = in_DESCRIPTION
	WHERE
		ID = in_ID;

	CALL WIZARD.EventLog_WizardInsert(
		vLog_ID,
		'Update of ROLE table',
		in_THROWNTIME,
		in_LOGINID,
		 2 ,
		 1 ,
		in_ID
		);
END;

------------------------------------------------------------------------------------------------------------------------
-- 													Delete
------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE WIZARD.ROLE_DELETE(
	IN in_ID INTEGER,
	IN in_THROWNTIME TIMESTAMP,
	IN in_LOGINID INTEGER
	)
	MODIFIES SQL DATA
	LANGUAGE SQL
BEGIN ATOMIC
	DECLARE vLog_ID INTEGER;

	DELETE FROM WIZARD.ROLE
	WHERE
		ID = in_ID;

	CALL WIZARD.EventLog_WizardInsert(
		vLog_ID,
		'Delete from ROLE table',
		in_THROWNTIME,
		in_LOGINID,
		 3 ,
		 1 ,
		in_ID
		);
END;

------------------------------------------------------------------------------------------------------------------------
-- 													LoadByID
------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE WIZARD.ROLE_LOADBYID(
	IN in_ID INTEGER
	)
	READS SQL DATA
	RESULT SETS  1 
	LANGUAGE SQL
BEGIN
	DECLARE c1 CURSOR WITH RETURN FOR
	SELECT
		ID,
		NAME,
		DESCRIPTION
	FROM
		WIZARD.ROLE
	WHERE
		ID = in_ID
	FOR FETCH ONLY;

	OPEN c1;
END;

------------------------------------------------------------------------------------------------------------------------
-- 													LoadAll
------------------------------------------------------------------------------------------------------------------------

CREATE PROCEDURE WIZARD.ROLE_LOADALL()
READS SQL DATA
RESULT SETS  1 
LANGUAGE SQL
BEGIN
	DECLARE c1 CURSOR WITH RETURN FOR
	SELECT
		ID,
		NAME,
		DESCRIPTION
	FROM
		WIZARD.ROLE
	FOR FETCH ONLY;

	OPEN c1;
END;

------------------------------------------------------------------------------------------------------------------------
-- 													LoadForView
------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE WIZARD.ROLE_LOADFORVIEW(
	IN in_startRowIndex	INTEGER,
	IN in_maximumRows INTEGER,
    IN in_OrderByStr VARCHAR( 255 ),
	IN in_FilterStr VARCHAR( 255 )
	)
READS SQL DATA
RESULT SETS  2 
LANGUAGE SQL
BEGIN
	DECLARE vSelectStatement VARCHAR( 2000 );
	DECLARE vSelectCountStatement VARCHAR( 2000 );
	
    DECLARE vFirstRowIndex, vLastRowIndex INTEGER;

	DECLARE c1 CURSOR WITH RETURN FOR vPreparedSelect;
	DECLARE c2 CURSOR WITH RETURN FOR vPreparedSelectCount;

    SET vSelectStatement = '
    	SELECT
			ID,
			NAME,
			DESCRIPTION
		FROM
			(SELECT
				ROW_NUMBER() OVER (ORDER BY ' || in_OrderByStr || ' ) AS RowNum,
				WIZARD.ROLE.ID,
				WIZARD.ROLE.NAME,
				WIZARD.ROLE.DESCRIPTION
			FROM
				WIZARD.ROLE	
        	WHERE ' || in_FilterStr || '
			ORDER BY ' || in_OrderByStr || ' 
        	)
    	WHERE
    		RowNum >= ? AND RowNum < ?
    	FOR FETCH ONLY';
	
	SET vSelectCountStatement = '
	SELECT COUNT (*) as RecordCount
	FROM
		WIZARD.ROLE	
	WHERE ' || in_FilterStr || '
    FOR FETCH ONLY';

    PREPARE vPreparedSelect FROM vSelectStatement;
	PREPARE vPreparedSelectCount FROM vSelectCountStatement;

	SET vFirstRowIndex = in_startRowIndex +  1 ;
    SET vLastRowIndex = vFirstRowIndex + in_maximumRows;
    OPEN c1 USING vFirstRowIndex, vLastRowIndex;

    OPEN c2;
END;

...
Рейтинг: 0 / 0
03.03.2008, 16:35
    #35167567
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
Извиняюсь, "к удаленной СЕТИ"

Кстати, db2 manager lite нормально понимает разделители ";" после END процедуры... Если бы только не проблема с настройкой коннекта - вполне нормальная программа...

Сейчас пробую toad - тоже не понимает скрипт в исходном виде... :(
...
Рейтинг: 0 / 0
03.03.2008, 16:52
    #35167652
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
Ага! Всё-таки, похоже, toad заработал! :)

Не очень он в чем-то удобный, но если сейчас не найду проблем существенных - можно им пользоваться.

Скрипт он, как и db2 manager, понимает в исходном виде (т.е. представленном выше).
...
Рейтинг: 0 / 0
03.03.2008, 17:09
    #35167718
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
Не увидел параметров в скрипте...

Этот скрипт вы можете выполнить обычным интерпретатором команд db2, заменив символ-разделитель команд с ';' на '@', например:
my_file.sql:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DROP PROCEDURE WIZARD.ROLE_INSERT@
DROP PROCEDURE WIZARD.ROLE_UPDATE@
...
CREATE PROCEDURE WIZARD.ROLE_INSERT
...
BEGIN ATOMIC
	DECLARE vLog_ID INTEGER;
...
END@
и выполнив:
db2 -td@ -f my_file.sql
Не могу сообразить, почему вам не подходит такой вариант?
...
Рейтинг: 0 / 0
03.03.2008, 18:24
    #35167974
Nafigator
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Накатывание параметризированных скриптов в db2 - чем?
Параметры "RowNum >= ? AND RowNum < ?"

Например, IBM data studio не поняла это и требовала заполнить значения вручную.

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


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