powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Узнать исходное поле для возвращаемого процедурой параметра
13 сообщений из 13, страница 1 из 1
Узнать исходное поле для возвращаемого процедурой параметра
    #39227989
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Можно ли узнать, из какого поля какой таблицы было получено значение выходного параметра хранимой процедуры?

Для VIEW это можно узнать следующим запросом:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select rf.RDB$RELATION_NAME,
       rf.RDB$FIELD_NAME,
       vr.RDB$RELATION_NAME,
       rf.RDB$BASE_FIELD
  from RDB$RELATION_FIELDS rf
  join RDB$VIEW_RELATIONS  vr on ( vr.RDB$VIEW_NAME = rf.RDB$RELATION_NAME and
                                   vr.RDB$VIEW_CONTEXT = rf.RDB$VIEW_CONTEXT )
 where rf.RDB$RELATION_NAME = :RELATION_NAME;



Для хранимой процедуры:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
select RDB$PROCEDURE_NAME,
       RDB$PARAMETER_NAME,
       RDB$RELATION_NAME,
       RDB$FIELD_NAME
  from RDB$PROCEDURE_PARAMETERS
 where RDB$PROCEDURE_NAME = :PROCEDURE_NAME
   and RDB$PARAMETER_TYPE = 1;

Но значения полей RDB$RELATION_NAME и RDB$FIELD_NAME is null

С уважением, Polesov.
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39227991
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovМожно ли
Нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39227993
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

тогда еще вопрос: залез в какую-то старую БД в 1-м диалекте.
В таблице RDB$PROCEDURE_PARAMETERS для каких-то процедур поля RDB$RELATION_NAME и RDB$FIELD_NAME определены,
для каких-то is null. От чего это зависит?
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39227995
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesovтогда еще вопрос: залез в какую-то старую БД в 1-м диалекте.
В таблице RDB$PROCEDURE_PARAMETERS для каких-то процедур поля RDB$RELATION_NAME и RDB$FIELD_NAME определены,
для каких-то is null. От чего это зависит?

Это таблица и поле для параметров типа type of column.
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39227998
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert, спасибо.

Формально выходной параметр SP может быть определен как type of column для поля любой таблицы с подходящим типом. Значит, использовать нельзя...
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228007
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovЗначит, использовать нельзя...

Конечно, нельзя. И в принципе вопрос бессмысленный: в процессе работы процедуры значения параметров могут устанавливаться как угодно и сколько угодно раз - из поля одной таблицы, из полей разных таблиц, из пальца создателя процедуры, вообще не устанавливаться.
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228009
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

в данном случае я спрашивал про параметры, значения которых берутся из каких-либо полей каких либо таблиц, например

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create procedure TEST
returns (
    SP_ID integer,
    SP_VAL varchar(10)
)
as
begin
  for
    select t1.ID, t2.VAL
      from TBL1 t1
      join TBL2 t2 on ( t2.REF_ID = t1.ID )
      into :SP_ID, :SP_VAL
  do
    suspend;
end



Результатом было бы:
Код: powershell
1.
2.
TEST.SP_ID  = TBL1.ID
TEST.SP_VAL = TBL2.VAL



Про поля, формируемые "на лету" речи нет.
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228019
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

Со стороны пользователя никак узнать этого нельзя. На выходе может оказаться все что угодно, вне зависимости от того, была ли вообще хоть какая-то выборка.
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228022
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

это я понял.

Но меня интересовало не собственно полученное значение параметра,
а можно ли его как-то связать с источником в виде ИМЯ_ТАБЛИЦЫ.ИМЯ_ПОЛЯ
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228025
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

Нельзя. В один и тот же выходной параметр я могу запихать значение из 100500 выборок.
К примеру если входной параметр равен 1 - выбираем из таблицы, если 2 - из процедуры, если 3 - считаем что-то сами и склеиваем с чем-то. Во всех остальных случаях - присваиваем "неопределен входной параметр". Ну и как прикажешь привязывать выходной параметр к таблице?
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228031
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster, да понял я, понял... :)
...
Рейтинг: 0 / 0
Узнать исходное поле для возвращаемого процедурой параметра
    #39228037
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

ты дурачок
выходное значение может быть любым

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


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