|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Может кто нибудь объяснить по шагам как создать SP в DB2 7.2 EE. Например: Таблица A(a1 int) Хранимая процедура должна вернуть количество строк, в которых поле а1 равно какому-то параметру. Если можно расскажите разные варианты: SQL, C, Java. Что лучше? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 09:51 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
С+ - + вся мощь WinAPI и DB2 API. Все в твоих руках - оптимизация, запуск параллельных процессов, управление памятью и т. д. - исходники хранятся отдельно от БД, т.е. некоторые проблемы с backup/restore SQL - + простой, но мощный процедурный язык. Фирменный построитель с возможностью отладки. - отсутствие доступа к WinAPI , ограниченный DB2 API (только работа с таблицами) JAVA - + фирменный построитель с возможностью отладки. - некоторая тормознутость и ресурсопрожорливость по сравнению с C+ и SQL. На счет WinAPI и DB2 API точно не знаю. Но возможностей никак не меньше чем у SQL. В v 7.2 допускаются вложенные ХП, но только если они одного типа. В v 8 это уже побеждено. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 12:17 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Если можно, примеры! А, что такое "Фирменный построитель с возможностью отладки" для SQL, где его взять? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2003, 16:03 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
IBM DB2 Store Procedure Builder идет в комплекте поставки DB2 v 7.1 и выше в v 8 переименован в центр разработки. Верно по крайней мере для WorkGroup for Win и Personal Edition. Вот пример SQL ХП: принимает целое положительное число, создает временную таблицу и записывает туда числа - степени 2, сумма которых дает исходное число. Возвращает на клиент открытый курсор на созданную таблицу. CREATE PROCEDURE DB2ADMIN.Proc1 ( IN P_ID INTEGER ) RESULT SETS 1 LANGUAGE SQL ------------------------------------------------------------------------ -- SQL Stored Procedure ------------------------------------------------------------------------ P1: BEGIN DECLARE L_MD INTEGER; DECLARE L_MS INTEGER; DECLARE GLOBAL TEMPORARY TABLE SESSION.ID ( ID INTEGER) WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED; WHILE P_ID > 0 DO SET L_MD = MOD(P_ID,2); SET P_ID = P_ID / 2; SET L_MS = VALUE(L_MS + L_MS,1); IF L_MD = 1 THEN INSERT INTO SESSION.ID VALUES L_MS; END IF; END WHILE; P2: BEGIN -- Declare cursor DECLARE cursor1 CURSOR WITH RETURN FOR SELECT * FROM SESSION.ID; -- Cursor left open for client application OPEN cursor1; END P2; END P1 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 07:07 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Брат! Уточни - у тебя какой сервер под Линуксами или под Виндой? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 10:39 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
gardenman << DB2 v 7.2 и Windows 2000, клиент Windows 2000 Я пытаюсь выполнить на клиенте, в "Командном центре" следующее: CREATE PROCEDURE COUNT_FROM_A (IN S_A1 INTEGER, OUT A_COUNT INTEGER) LANGUAGE SQL BEGIN SELECT COUNT(*) INTO A_COUNT FROM A WHERE A1 = S_A1; END На что получаю: SQL0104N Обнаружен неправильный элемент "END-OF-STATEMENT" после текста "OM A WHERE A1 = S_A1". Список правильных элементов: "<psm_semicolon>". LINE NUMBER=6. SQLSTATE=42601 и SQL0104N Обнаружен неправильный элемент "END-OF-STATEMENT" после текста "END". Список правильных элементов: "JOIN <joined_table>". SQLSTATE=42601 В чем ошибки? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 12:22 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Прошу прошения. Речь шла о DB2 for Win. Но пример ХП SQL - межплатформенный :). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 12:27 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Прошу прошения. Речь шла о DB2 for Win. Но пример ХП SQL - межплатформенный :). 2 oleg_e метка перед begin и после end см. пример ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 12:31 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Не обязательно. Если честно, даже не вижу, откуда там могла взяться ошибка, кроме как с типами (какого типа A.A1?) может быть что-то напутано или в синтаксисе ошибки... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:10 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
ошибка там, ошибка :) проблема заклюсчается в том, что один и тот же разделитеть ";" используется и в spl, и в командном центре ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 13:19 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Ага!... ;) Вот она где собака порылась... ;) Я-то пользуюсь в основном Command Line Processor... Да и с типами все понятно, это я первое сообщение не разглядел... > oleg_e SQL: Код: plaintext 1. 2. 3. 4.
Java (JDBC): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Java (SQLJ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Текст SQL-процедур сначала переводится в C, потом уж процедура билдится и подлинковывается... В случае выбора Java - JDBC гибче, но SQLJ эффективней и проще... Так как можно их смешивать, то лучше писать по возможности используя SQLJ, а если прижмет надобность - тогда уж JDBC... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 14:19 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
С этим вопросом разобрались, БОЛШОЙ-БОЛШОЙ спасиба! Если писать без переносов строки, то работает, но ошибка в другом: Не удалось загрузить указанную библиотеку DLL "С:\PROGRA~1\SQLLIB\function\db2udp.dll" А, скажите пожалуйста, что дальше делать с текстом на C или Java, их нужно транслировать, компиллировать и т.п. или что? :-[ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 15:52 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
нет, распечатать и в рамку! у тебя ж dll-ка не собралась. вот и смотри в лог, почему она не собралась. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2003, 16:19 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
распечатать и в рамку! - полчаса смеялся :)). Но я действительно не знаю что делать. Кто-нибудь может, если не лень, объяснить по шагам как, все таки, создать хранимую процедуру с начала - до конца? Если лень, то может скажете где прочитать? :) Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2003, 11:16 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
как нибудь выложу makefile-ы, шаблоны и скрипты для создания ХП под виндйи и линуксами. Некогда щас. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2003, 00:42 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Спасибо ВСЕМ! Поставили Store Procedure Builder, кое-как заработала! Надо почитать Java! На SQL и С не получилось, наверное потому, что нету С-компиллятора! :-) Пока всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2003, 18:57 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
На SQL и С не получилось, наверное потому, что нету С-компиллятора Текст SQL-процедур сначала переводится в C, а потом уж билдится - т.е., таки да, нужен С-компилер какой-нибудь... ;) У нас стоит MS VC++ 6.0... Для Java в стандартную поставку входит JDK (SQLLIB\java\jdk), старенький, правда, но это не так уж и критично, и ставить дополнительно ничего не надо... Теоретически, даже SPB не нужен, но с ним проще... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2003, 10:40 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Возможно ли использование SP непосредственно в запросе? Если можно, то простенький пример пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2003, 14:17 |
|
Хранимые процедуры
|
|||
---|---|---|---|
#18+
Нельзя. Для этого существуют функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2003, 15:22 |
|
|
start [/forum/topic.php?fid=43&fpage=164&tid=1606636]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 243ms |
total: | 381ms |
0 / 0 |