Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / помогите написать примитивный скрипт / 12 сообщений из 12, страница 1 из 1
12.09.2007, 14:48
    #34794601
mishga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Добрый день, коллеги!
Новичок в ДБ2 - ничего не понимаю.
База версии 7.1, связь с ней только по ODBC.
Пытаюсь запустить примитивный скрипт
Код: plaintext
1.
2.
3.
4.
5.
declare @GP_ID int;
set @GP_ID =  106983463 ;
SELECT row_id, con_cd, pr_per_addr_id, x_gp_oid,last_name, fst_name 
FROM sserolpa.s_contact 
WHERE x_gp_oid = @GP_ID WITH ur;
на каждое слово ругается
Код: plaintext
1.
com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: - 104 , SQLSTATE:  42601 , SQLERRMC: @;;( : PATH CURRENT CONNECTION <IDENTIFIER> CURRENT_PATH 
Запускать пытался через AQT Tool и через DB2 Developer Workbench.
Что делать, где ошибка?
...
Рейтинг: 0 / 0
12.09.2007, 16:06
    #34794973
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Командный процессор db2 - вещь весьма примитивная.
Он не может выполнять декларирования, присваивания, параметризированные запросы.
...
Рейтинг: 0 / 0
12.09.2007, 16:10
    #34794995
mishga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Так а где создавать и как выполнять подобные скрипты, только через хранимую процедуру?
Я не уверен, что у меня есть права на создание хранимок в базе.
...
Рейтинг: 0 / 0
12.09.2007, 16:18
    #34795046
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Чтобы параметризировать запросы нужно засунуть вызовы CLP в bash скрипт. У CLP есть фича - он запускает фоновый процесс db2bp, который сохраняет соединение. Если при этом еще и отключить вывод заголовков, то вывод CLP можно засунуть в переменную окружения. На *NIX системах sh+db2+awk - и больше ничего не надо. Если на винде установить mingw и msys то поимеете то же самое.
...
Рейтинг: 0 / 0
12.09.2007, 16:21
    #34795066
mishga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Shell scripting - это круто, но нет ли какого-нибудь стандартного тула, аля Qwery Analyzer или PL\SQL Developer ? Неужели же IBM ничего такого не предоставляет?
Или хотя бы аналог утилиты SQLPlus , которая из файла умеет скрипты запускать.
...
Рейтинг: 0 / 0
12.09.2007, 16:46
    #34795205
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
test.bat:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
db2 connect to sample

db2 ^
select count( 1 ) ^
from syscat.tables ^
where tabschema='%1'

db2 ^
select count( 1 ) ^
from syscat.views ^
where viewschema='%2'
test.bat SYSIBM SYSCAT
...
Рейтинг: 0 / 0
12.09.2007, 16:52
    #34795252
Hunterik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Mark дал хороший пример...

Насчёт графических утилит - есть - Command Editor. Может быть, это то, что вы ищете...
А может и нет.
Можете вызвать его из командной строки (db2ce) или через Command Center.

А вообще - информации дали придостаточно. =)
...
Рейтинг: 0 / 0
12.09.2007, 16:56
    #34795277
mishga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
ок, усложним задачу.
Мне нужно написать некоторый код, с десятком селектов внутри, возвращающих кучу полей,
использующих результаты предыдущих селектов и т.п.
короче обычную хранимую процедуру.
результат выполнения процедуры надо записать в файл.
Создавать процедуру в базе не могу, нет прав.
Могу я создать сходный по функциональности SQL Script и запустить его через что-нибудь,
CLP, какой-нибудь тул и т.п.?
Эта задача элементарно решается и в SQL Server и в Oracle.
Для DB2 обязательно батник ваять или Shell script ???
И форматировать рукам каждое поле на выходе финального запроса?
Что ж такое то! Бьюсь об стену уже две недели.
...
Рейтинг: 0 / 0
12.09.2007, 17:01
    #34795301
mishga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
HunterikMark дал хороший пример...

Насчёт графических утилит - есть - Command Editor. Может быть, это то, что вы ищете...
А может и нет.
Можете вызвать его из командной строки (db2ce) или через Command Center.

А вообще - информации дали придостаточно. =)

Я глубоко благодарен Марку, но пример не подходит,
т.к. показывает только возможность дать селект к базе.
Ни декларирования ни передачи результата в другой запрос.
Ни форматирования на выходе.
Я верю что с помощью unix и windows shell scripting можно делать такие штуки.
Но мой вопрос только ли через них??
Это же каменный век какой-то!
Command Editor поддерживает декларирование переменных и т.п.?
...
Рейтинг: 0 / 0
12.09.2007, 17:26
    #34795430
Hunterik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Это было к вопросу о графических средствах...

Юзайте возможности SQL. =) Раз не хотите shell и bat.
Постарайтесь обойти свою задачу вложенными запросами.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
db2 "select old.empno,
            old.salary,
            (select new.salary from employee as new where new.empno = old.empno) as newsalary
       from old table (update employee set salary=salary*2 where salary < 50000) as old"

EMPNO  SALARY      NEWSALARY
------ ----------- -----------
000120    49250,00    98500,00
000170    44680,00    89360,00
000220    49840,00    99680,00
000230    42180,00    84360,00
000240    48760,00    97520,00
000250    49180,00    98360,00
000260    47250,00    94500,00
000330    45370,00    90740,00
000340    43840,00    87680,00
200010    46500,00    93000,00
200280    46250,00    92500,00
...
Рейтинг: 0 / 0
12.09.2007, 18:04
    #34795627
Mark Barinstein
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
Качаем интерпретатор REXX .
Заглядываем в примеры у себя на сервере: ...\sqllib\samples\rexx
Потратите несколько дней на обучение и будете счастливы.
...
Рейтинг: 0 / 0
14.11.2007, 15:48
    #34939171
Hunterik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите написать примитивный скрипт
К вопросу о DB2 9.5

Среди прочего появилась такая функциональность, как глобальные переменные...
Примерчик корявый, но простенькие вещи делать можно теперь без особых проблем.
Через db2ce...

create variable int_val integer default 100!

create procedure my_func (in param1 integer, out param2 integer)
language sql
begin
set param2 = param1 * int_val ;
end!

call my_func(5,?)!

------------------------------------------------------------------------

Значение выходных параметров
--------------------------
Имя параметра : PARAM2
Значение парам. : 500

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


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