powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Хранимые процедуры
25 сообщений из 45, страница 1 из 2
Хранимые процедуры
    #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
Хранимые процедуры
    #38828430
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Faster73надо чтобы в поле sum выводилась надпись "оплачено", "не оплачено".
Хранимая процедура не нужна для этого. Оператора CASE вполне достаточно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранимые процедуры
    #38828431
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Студентов прорвало,чувствуется приближение сессии :)
...
Рейтинг: 0 / 0
Хранимые процедуры
    #38828435
Faster73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так как правильно)
...
Рейтинг: 0 / 0
Хранимые процедуры
    #38828440
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Faster73,

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

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

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

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

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

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

Roadster> да пожалуйста
>
> NULL;
не оракул
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранимые процедуры
    #38829108
Фотография roadster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийне оракулнет fb под рукой, а самому писать целиком процедуру просто лень.
смысл я вроде передал.
...
Рейтинг: 0 / 0
Хранимые процедуры
    #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
Хранимые процедуры
    #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
Хранимые процедуры
    #38829298
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Хранимые процедуры
    #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
Хранимые процедуры
    #38829510
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
perv не может быть равен vtor.
Точно так же, как оба не могут
быть равны tret и chetvert.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Хранимые процедуры
    #38829517
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

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


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