Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Получить значение из блока PL/SQL  [new]
Юлия0694
Member

Откуда:
Сообщений: 4
Прошу подсказки у знающих:
Есть небольшой PL/SQL блок в Oracle Query (Delphi):
" DECLARE
    v_count   BINARY_INTEGER := 0;
BEGIN
  SELECT COUNT ( cnt )
    INTO v_count
    FROM ( SELECT COUNT ( * ) cnt
             FROM pdm_dpp.a_tech_doc a
            WHERE a.id_sum_spec = :id_sum_spec
              AND a.v_e = 999999
              AND a.tag_a <> 0
         GROUP BY a.num_serial )
   WHERE (cnt) > 1;
  /*DBMS_OUTPUT.PUT_LINE ( v_count );
  IF ( v_count > 0 ) THEN
    DBMS_OUTPUT.PUT_LINE ( 'Дублирование №п/п позиций штампа тех. документации' );
  END IF;*/
END; "

В procedure мне необходимо реализовать условие: если переменная V_COUNT >0, то происходит вывод "сообщения" в поле Memo. Как правильно вытянуть с блока переменную?

Пыталась сделать это так:
if (oqCount_V.GetVariable('V_COUNT') > 0) then
	begin
		meLogSS.Lines.Add('Дублирование №п/п позиций штампа тех. документации');
	end;


Подскажите пожалуйста.

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
6 май 18, 20:19    [21391312]     Ответить | Цитировать Сообщить модератору
 Re: DELPHI, PL/SQL блок  [new]
ma1tus
Member

Откуда:
Сообщений: 507
Юлия0694,

Вы бы написали, что именно не получилось.
Да, вроде, и PL/SQL для этого запроса не нужен...
6 май 18, 20:36    [21391341]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
defecator
Member

Откуда:
Сообщений: 38823
SELECT COUNT ( * ) cnt
  FROM pdm_dpp.a_tech_doc a
WHERE a.id_sum_spec = :id_sum_spec
     AND a.v_e = 999999
     AND a.tag_a <> 0
 GROUP BY a.num_serial
HAVING COUNT(*) > 1


анонимный блок не нужен
6 май 18, 20:53    [21391377]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
Юлия0694
Member

Откуда:
Сообщений: 4
ma1tus,
Правильно ли я обращаюсь к переменной с Oracle Query?
Вот эта строка: oqCount_V.GetVariable('V_COUNT') > 0
6 май 18, 21:24    [21391453]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
ma1tus
Member

Откуда:
Сообщений: 507
ma1tus
что именно не получилось.
Сморозил... ))

Наверное, в DOA как-то так:
begin select * into :x from dual end;
6 май 18, 21:27    [21391460]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
ma1tus
Member

Откуда:
Сообщений: 507
Юлия0694,

plsql-переменная и параметр компонента - не одно и тоже. Попробуйте вместо Declare в plsql, DeclareVariable в delphi...
6 май 18, 21:30    [21391470]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
defecator
Member

Откуда:
Сообщений: 38823
Юлия0694
ma1tus,
Правильно ли я обращаюсь к переменной с Oracle Query?
Вот эта строка: oqCount_V.GetVariable('V_COUNT') > 0

чем не устроило простое решение 21391377 ?
хочется странного ?
6 май 18, 21:53    [21391539]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
b0rk
Member

Откуда: Харьков
Сообщений: 544
[quot Юлия0694
" DECLARE
    v_count   BINARY_INTEGER := 0;
BEGIN
  SELECT COUNT ( cnt )
    INTO v_count
    FROM ( SELECT COUNT ( * ) cnt
             FROM pdm_dpp.a_tech_doc a
            WHERE a.id_sum_spec = :id_sum_spec
              AND a.v_e = 999999
              AND a.tag_a <> 0
         GROUP BY a.num_serial )
   WHERE (cnt) > 1;

  :v_count  := v_count ;
END; "

[/quot]
так пойдет?
7 май 18, 07:20    [21391943]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
Юлия0694
Member

Откуда:
Сообщений: 4
b0rk, СПАСИБО!!!)
7 май 18, 22:45    [21394350]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
Юлия0694
Member

Откуда:
Сообщений: 4
Всем спасибо за ответы!)
7 май 18, 22:54    [21394362]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
Vlad F
Member

Откуда:
Сообщений: 98
b0rk
<...>
так пойдет?

Древнеримские программисты подобный стиль называли, - per anus ad astra.
7 май 18, 23:28    [21394415]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
stells2
Member

Откуда: Оклахома Пригород Колымы
Сообщений: 544
Юлия0694,
не вдаваясь в логику вашу, из того что есть - просто замените на
SELECT COUNT ( cnt ) v_count
FROM 
( SELECT COUNT ( * ) cnt
  FROM pdm_dpp.a_tech_doc a
  WHERE a.id_sum_spec = :id_sum_spec
      AND a.v_e = 999999
      AND a.tag_a <> 0
  GROUP BY a.num_serial 
)
WHERE cnt > 1


без всяких begin, into и прочей лабуды. ну, или как предложил defecator 21391377
дальше:
oqCount_V.Active := true;
 if (oqCount_V.FieldByName('v_count').AsInteger > 0) then
 begin
     meLogSS.Lines.Add('Дублирование №п/п позиций штампа тех. документации');
 end; 
8 май 18, 09:40    [21394807]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
kloun02
Member

Откуда:
Сообщений: 7458
Если написано по тех.заданию сабжу что надо из анонимного блока, то почему некоторым кажецца что обязательно надо как то по другому ?
8 май 18, 14:23    [21395949]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28793

08.05.2018 14:23, kloun02 пишет:
> Если написано по тех.заданию сабжу что надо *из анонимного блока*, то почему некоторым кажецца что обязательно надо как то по другому ?

ты так сильно любишь школьников?

Posted via ActualForum NNTP Server 1.5

8 май 18, 14:27    [21395958]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
чччД
Guest
Мимопроходящий
08.05.2018 14:23, kloun02 пишет:
> Если написано по тех.заданию сабжу что надо *из анонимного блока*, то почему некоторым кажецца что обязательно надо как то по другому ?

ты так сильно любишь школьников?


+ Известный способ сделать работу чужими руками - представиться девушкой.
Картинка с другого сайта.
8 май 18, 14:42    [21395988]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
stells2
Member

Откуда: Оклахома Пригород Колымы
Сообщений: 544
kloun02,
1. Простите, это бред - указывать программисту, в любом документе и даже на словах - как оформлять запрос в компоненте, который в общем, кроме этого программиста - вообще никому не доступен.
2. Есть элементарные вещи - например, есть борщ ложкой, ну по крайней мере тем, чем можно хлебать и зачерпывать но никак не вилкой и уж тем более не палочками для суши.

Но, если это задание для кандидата на должность программиста - я снимаю шляпу перед человеком, который такое задние дал.
8 май 18, 20:21    [21396818]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
kloun02
Member

Откуда:
Сообщений: 7458
stells2
1. Простите, это бред - указывать программисту, в любом документе и даже на словах - как оформлять запрос в компоненте, который в общем, кроме этого программиста - вообще никому не доступен.
Программистов может быть больше одного... И к сожалению среди этих программистов есть такие индивидуалы которые этого не понимают.

stells2
2. Есть элементарные вещи - например, есть борщ ложкой, ну по крайней мере тем, чем можно хлебать и зачерпывать но никак не вилкой и уж тем более не палочками для суши.
Хлебай лаптем, чо

stells2
Но, если это задание для кандидата на должность программиста - я снимаю шляпу перед человеком, который такое задние дал.
Например, преподаватель дал задание студенту, а у препода всякие звания и степени...

з.ы.
Кац,
Тут любителей школьниц и без меня хватает, читающих тех задания по диагонали, и друг друга баянющие решениями простейших школьных задачек.
10 май 18, 08:33    [21398983]     Ответить | Цитировать Сообщить модератору
 Re: Получить значение из блока PL/SQL  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 28793

10.05.2018 8:33, kloun02 пишет:
> з.ы.
> Кац,
> Тут любителей школьниц и без меня хватает, читающих тех задания по диагонали,
> и друг друга баянющие решениями простейших школьных задачек.

когда человек не такой, как вообще, потому один такой, а другой такой,
и ум у него не для танцевания, а для устройства себя,
для развязки свого существования, для сведения обхождения,
и когда такой человек, ежели он вчёный, поднимется умом своим за тучи
и там умом своим становится ещё выше Лаврской колокольни,
и когда он студова глянет вниз, на людей, так они ему покажутся такие махонькие-махонькие,
всё равно как мыши… пардон, как крисы…
потому что это же Человек!!
а тот, который он, это он, он тоже человек, невчёный, но… зачем же?!
это ж ведь очень и очень! Да! Да! Но нет!

Posted via ActualForum NNTP Server 1.5

10 май 18, 09:57    [21399145]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить