Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранимые процедуры / 25 сообщений из 45, страница 1 из 2
08.12.2014, 20:54
    #38828417
Faster73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Хранимые процедуры, помогите пожалуйста:
есть таблица TABL,
у неё 3 поля: perv - integer, vtor - integer, sum - varchar.

Код
CREATE OR ALTER procedure QA (
VTOR integer,
PERV integer)
returns (
SUM varchar)
as
begin
if (perv < vtor) then
sum = "не оплачено"
else sum=" оплачено;
end

Помогите пожалуйста, алгоритм примерный написал, надо чтобы в поле sum выводилась надпись "оплачено", "не оплачено".
...
Рейтинг: 0 / 0
08.12.2014, 21:23
    #38828430
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Faster73надо чтобы в поле sum выводилась надпись "оплачено", "не оплачено".
Хранимая процедура не нужна для этого. Оператора CASE вполне достаточно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.12.2014, 21:25
    #38828431
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Студентов прорвало,чувствуется приближение сессии :)
...
Рейтинг: 0 / 0
08.12.2014, 21:38
    #38828435
Faster73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
так как правильно)
...
Рейтинг: 0 / 0
08.12.2014, 21:53
    #38828440
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Faster73,

For select или case...
...
Рейтинг: 0 / 0
08.12.2014, 22:05
    #38828444
Faster73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
можно посмотреть пример
...
Рейтинг: 0 / 0
08.12.2014, 22:17
    #38828449
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Faster73,

что то типа
Код: plaintext
1.
2.
3.
select
       case sum
         when (PERV < VTOR) then 'не оплачено'
         when (VTOR > PERV) then 'оплачено' from TABL  
...
Рейтинг: 0 / 0
08.12.2014, 22:31
    #38828465
Faster73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Gallemar, ругается на код
...
Рейтинг: 0 / 0
08.12.2014, 22:32
    #38828466
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Faster73можно посмотреть пример
А ты сможешь посмотреть пример? Это ведь надо файл doc/sql.extension/README.case.txt
открывать, а потом ещё читать многа букафф...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.12.2014, 22:43
    #38828473
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Dimitry Sibiryakovчитать многа букафф...

Не издевайся над людьми.
Вот тут http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird-Language-Reference-Russian.pdf буквы более знакомые, страница 198,примеров полно. Правда если ты отдельный столбец выбираешь для sum - проще сделать триггер на after insert or update.
...
Рейтинг: 0 / 0
09.12.2014, 01:43
    #38828531
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Gallemar,

Зачем триггер-то?

Код: plsql
1.
 select iif(vtor>perv........) from ....
...
Рейтинг: 0 / 0
09.12.2014, 01:56
    #38828533
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
DarkMaster,можно триггер,можно процедуру,можно вьюшку,можно вычисляемый столбец сделать. Стоит задача - надо чтобы в поле sum выводилась надпись "оплачено", "не оплачено", любой способ подходит. Задача явно абстрактная из учебника.
...
Рейтинг: 0 / 0
09.12.2014, 02:10
    #38828535
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Gallemar,

Дык уже привели по меньшей мере 3 решения....
...
Рейтинг: 0 / 0
09.12.2014, 08:41
    #38828589
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
DarkMasterДык уже привели по меньшей мере 3 решения....про suspend ещё ничего не сказали.
...
Рейтинг: 0 / 0
09.12.2014, 10:47
    #38828685
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
roadster,

И даже текст хранимки не привели, редиски ;(
...
Рейтинг: 0 / 0
09.12.2014, 15:08
    #38829070
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
DarkMasterИ даже текст хранимки не привели, редиски ;(да пожалуйста
Код: sql
1.
NULL;
...
Рейтинг: 0 / 0
09.12.2014, 15:10
    #38829072
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Hello, Roadster!
You wrote on 9 декабря 2014 г. 15:09:18:

Roadster> да пожалуйста
>
> NULL;
не оракул
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.12.2014, 15:36
    #38829108
roadster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Мимопроходящийне оракулнет fb под рукой, а самому писать целиком процедуру просто лень.
смысл я вроде передал.
...
Рейтинг: 0 / 0
09.12.2014, 17:10
    #38829268
Faster73
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
процедуру написал:
CREATE OR ALTER procedure PROC (
VTOR integer,
PERV integer)
returns (
sum varchar(40))
as
BEGIN


IF (VTOR > PERV) THEN sum = 'оплачено';
ELSE sum = 'не оплачено';
suspend;
END

как её вызывать? и менять в поле sum таблицы TABL, помогите подалуууйййсста
...
Рейтинг: 0 / 0
09.12.2014, 17:20
    #38829287
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Faster73процедуру написал:
CREATE OR ALTER procedure PROC (


То, что ты написал - это что-то ... странное в общем.

Faster73как её вызывать? и менять в поле sum таблицы TABL, помогите подалуууйййсста

1) Вызывать SELECT ... FROM PROCEDURE_NAME(...parameters...) А за SUM как имя выходного параметра отдельное спасибо.
2) UPDATE TABL
SET ASUM=:NEWSUM
WHERE .... <--- еще одно спасибо за таблицу без PK.
...
Рейтинг: 0 / 0
09.12.2014, 17:26
    #38829298
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
...
Рейтинг: 0 / 0
09.12.2014, 19:42
    #38829506
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Никаких процедур,только триггер,только хардкор!!!
Тынц:
Код: 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.
Таблица:
CREATE TABLE TABL (
    ID       INTEGER NOT NULL,
    PERV     INTEGER,
    VTOR     INTEGER,
    COL_SUM  CALC_SUM /* CALC_SUM = VARCHAR(11) CHECK (VALUE IN ('не оплачено', 'оплачено')) */
);

В ней ключ:
ALTER TABLE TABL ADD CONSTRAINT PK_TABL PRIMARY KEY (ID);

и домен 

CREATE DOMAIN CALC_SUM AS
VARCHAR(11) CHARACTER SET WIN1251
CHECK (VALUE IN ('не оплачено', 'оплачено'))
COLLATE WIN1251;

Генератор инкремента на поле PK:
CREATE GENERATOR GEN_TABL_ID;

Триггер на инкремент:
CREATE OR ALTER trigger tabl_bi for tabl
active before insert position 0
as
begin
  if (new.id is null) then
    new.id = gen_id(gen_tabl_id,1);
end

 И самое важное - триггер на выставление значений в поле sum (у меня COL_SUM ) 
CREATE OR ALTER trigger tabl_aiu0 for tabl
active after insert or update position 0
as
begin

  if (new.PERV > new.VTOR) then
    update TABL
    set col_SUM = 'оплачено'
    where col_SUM is NULL; else
  update TABL
  set col_sum = 'не оплачено'
  where col_SUM is NULL;
end


Просьба сторожилов в меня не кидать помидорами!!!
Студент,у тебя нет условия как быть если perv=vtor, поэтому я его не реализовал
...
Рейтинг: 0 / 0
09.12.2014, 19:44
    #38829510
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
perv не может быть равен vtor.
Точно так же, как оба не могут
быть равны tret и chetvert.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.12.2014, 19:47
    #38829517
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Gallemar,

боюсь за твои художества его отчислят
...
Рейтинг: 0 / 0
09.12.2014, 19:48
    #38829518
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранимые процедуры
Гаджимурадов Рустам,ну я бы учел эту возможность как человеческий фактор и эксепшен повесил,с гневной надписью. Препод был бы рад старательности чада.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранимые процедуры / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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