Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Узнать исходное поле для возвращаемого процедурой параметра / 13 сообщений из 13, страница 1 из 1
30.04.2016, 13:11
    #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
30.04.2016, 13:16
    #39227991
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать исходное поле для возвращаемого процедурой параметра
PolesovМожно ли
Нельзя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 13:23
    #39227993
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать исходное поле для возвращаемого процедурой параметра
Dimitry Sibiryakov,

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

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

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

Конечно, нельзя. И в принципе вопрос бессмысленный: в процессе работы процедуры значения параметров могут устанавливаться как угодно и сколько угодно раз - из поля одной таблицы, из полей разных таблиц, из пальца создателя процедуры, вообще не устанавливаться.
...
Рейтинг: 0 / 0
30.04.2016, 14:27
    #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
30.04.2016, 15:28
    #39228019
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Узнать исходное поле для возвращаемого процедурой параметра
Polesov,

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

это я понял.

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

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

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

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


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