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

Откуда: E-burg
Сообщений: 34
Приветсвую All!

Не подскажите, где можно почитать, посмотреть примерчики про subj, чтоб научится писать...

Заранее благодарен!
12 сен 03, 09:01    [336047]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
DB2 SQL Reference.
12 сен 03, 09:26    [336089]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Lefan
Member

Откуда: E-burg
Сообщений: 34
спасибо....

А есть примеры, как от начала до конца создать процедуру?
как ее компилировать и т.д.
12 сен 03, 10:21    [336198]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
Вот тебе для начала.

CREATE PROCEDURE YEIS.Otchet01 (IN StDate date, IN EnDate date, IN TempCom1 VARCHAR(50), IN TempCom2 VARCHAR(50), IN WhichQuery VARCHAR(6))
------------------------------------------------------------

--Правила по использованию переменных показаны в комментариях перед каждым из селектов

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

DYNAMIC RESULT SETS 1
LANGUAGE SQL
SPECIFIC YEIS.Otchet01
NOT DETERMINISTIC
MODIFIES SQL DATA
CALLED ON NULL INPUT
------------------------------------------------------------------------

-- SQL Stored Procedure

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

P1: BEGIN
-----------------------------------------------------------------------

--вспомогательные переменные


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

-- Declare cursors

DECLARE GNK1 CURSOR WITH RETURN FOR
-----------------------------------------------------------------------------------

--1)Сведения по экспортным и импортным контрактам на товары, работы, услуги

--Входные данные: StDate,EnDate

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

SELECT TT.SmallName AS "Наименование предприятия",
TK.FirmTIN AS "ИНН предприятия",
TT.OKPO AS "ОКПО",
TA.Account AS "Код банковского счета",
TK.KntID AS "ИДН контракта",
TK.KntType AS "Код по ГТД (экс/имп)" ,
TD.GdsKod AS "Код ТНВЭД",
CAST (TD.InvCost AS FLOAT) AS "Фактурная стоимость",
TK.CurrKod AS "Код валюты",
CAST (TK.CurrRate_r AS FLOAT) AS "Курс валюты",
TDel.DlvTrm AS "Цифровой код условий поставки",
TAgr.AgrmSubject AS "Предмет соглашения",
TPay.PmDate AS "Дата поступления средств",
CAST (TPay.PmSum AS FLOAT) AS "Сумма поступивших средств"
FROM ((((((YEIS.Kontracts TK
LEFT OUTER JOIN YEIS.TINList TT ON TK.FirmTIN=TT.TIN)
LEFT OUTER JOIN YEIS.Accounts TA ON TT.TIN=TA.TIN)
LEFT OUTER JOIN YEIS.Deliver TD ON TK.KntID=TD.KntID)
LEFT OUTER JOIN YEIS.DelTerms TDel ON TK.KntID=TDel.KntID)
LEFT OUTER JOIN YEIS.Oplata TOp ON TK.KntID=TOp.KntID)
LEFT OUTER JOIN YEIS.Agrmnts TAgr ON TK.KntID=TAgr.KntID)
LEFT OUTER JOIN YEIS.PaymFact TPay ON TK.KntID=TPay.KntID
WHERE TD.DlvDate BETWEEN StDate AND EnDate
ORDER BY TK.KntType ASC;
CASE WHICHQUERY
WHEN 'GNK1'
THEN
OPEN GNK1;
END CASE;

END P1

Чтобы скомпилить, закинь его в SPB, если у тебя DB2 UDB, или в Run SQL Script - если DB2/400. Чтобы компилить в SPB на тачке должен стоять VC++ Compiler. Поставишь его, затем в SPB укажешь - где он находится. И всё - дальше debug.
12 сен 03, 10:37    [336231]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Lefan
Member

Откуда: E-burg
Сообщений: 34
Понятненько, спасибо...

а еще вопросик, а если нужна процедура на Java, тогда как?
и как потом юзать процедуры?

Явно последний вопрос... :)
12 сен 03, 11:12    [336328]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
В Jav'e есть SQLJ - удобная штука. А юзать вот так:
call yeis.otchet01('2000-01-01','2020-01-01','01','2003','GNK1')Картинка с другого сайта.
12 сен 03, 11:21    [336349]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
риман, дык тут всего один запрос ... любитель процедур блин
12 сен 03, 11:32    [336380]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Lefan
Member

Откуда: E-burg
Сообщений: 34
> В Jav'e есть SQLJ - удобная штука.
а как ее юзать?

> А юзать вот так:
> call yeis.otchet01('2000-01-01','2020-01-01','01','2003','GNK1')
посылать вместо select *... ?
12 сен 03, 11:57    [336445]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
Lefan
Member

Откуда: E-burg
Сообщений: 34
у мня есть такой запрос, курсы доллара...
имею таблицу курс доллара dollar
а так же строю VIEW dollar2, в котором все записи кроме максимальной даты...
а потом строю запрос
select * from dollar a, dollar b

where a.iddollar=b.iddollar

и потом получаю разницу в курсе....

...
int kurs = es.rs.getFloat(3) - es.rs.getFloat(6);
...

что эффективнее, оставить так иль написать процедуру?
12 сен 03, 12:28    [336546]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
To NewYear. Ну что я всю процедуру, которая ровнехонько 31K в компайле занимает сюда выложу что ли? Человек просил пример - вот он ему пример.
To Lefan. Всё спрашивай у NewYear'a я у него учился, можешь посмотреть старые топики - он там всё подробно объясняет, даже про динамический сикуль...
12 сен 03, 12:39    [336575]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
Кстати NewYear у меня эта процедура скоро перерастет 32К. Так вот, как можно сделать две процедуры под одним логическим именем? Нужно это потому что в проге зашито имя проц-ры, соответственно второе не укажешь, и больше 32К не сделаешь. Как тут быть?
12 сен 03, 12:44    [336587]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
только разве руками поковыряться.
напиши прокладку, хотя бы ни C, и оформи ее как процедуру. а из нее уже вызывай все, что душе угодно.
12 сен 03, 13:16    [336712]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
Сэнкс. Мне вот интересно, что такое RTFM. Как я понимаю это типа: "копать, пока не накопаешь...", а как дословно будет?
12 сен 03, 13:29    [336766]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
NewYear
Member

Откуда: Большой адронный коллайдер
Сообщений: 2203
Read The Fucking Manual
12 сен 03, 13:33    [336775]     Ответить | Цитировать Сообщить модератору
 Re: Хранимые процедуры  [new]
riman
Member

Откуда:
Сообщений: 2234
Картинка с другого сайта.Вот мля. Мне тут один программер всё твердил RTFM, RTFM... У, чертила...
12 сен 03, 13:37    [336790]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить