powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Переменные ХП
29 сообщений из 29, показаны все 2 страниц
Переменные ХП
    #40060946
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, в какой таблице хранятся описания переменных (которые DECLARE VARIABLE) триггеров и ХП? В "RDB$PROCEDURE_PARAMETERS" и "RDB$FUNCTION_ARGUMENTS" лежат только входные/выходные параметры ХП и функций соответственно.
...
Рейтинг: 0 / 0
Переменные ХП
    #40060948
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

employee.fdb

Код: sql
1.
2.
3.
4.
5.
6.
7.
create or alter procedure DELETE_EMPLOYEE (
    EMP_NUM integer)
as
declare variable ANY_SALES integer;
BEGIN
    any_sales = 0;
    ...



rdb$procedures.rdb$procedure_source
Код: sql
1.
2.
3.
4.
DECLARE VARIABLE any_sales INTEGER;
BEGIN
	any_sales = 0;
...



rdb$procedures.rdb$procedure_blr

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
blr_version5,
blr_begin,
   blr_message, 0, 2,0,
      blr_long, 0,
      blr_short, 0,
   blr_message, 1, 1,0,
      blr_short, 0,
   blr_receive, 0,
      blr_begin,
         blr_declare, 0,0, blr_long, 0,
         blr_assignment,
            blr_null,
            blr_variable, 0,0,
...
...
Рейтинг: 0 / 0
Переменные ХП
    #40060949
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

не в каких. Это часть тела процедуры/функции/триггера
смотри в полях RDB$FUNTION_SOURCE RDB$PROCEDURE_SOURCE RDB$TRIGGER_SOURCE
...
Рейтинг: 0 / 0
Переменные ХП
    #40060952
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Печально. Я так понимаю, просить трекер о вынесении параметров в таблицу бесполезно.
...
Рейтинг: 0 / 0
Переменные ХП
    #40060956
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

конечно. В этой секции помимо локальных переменных могут быть подфункции/подпроцедуры, а также курсоры. А зачем они тебе собственно, делаешь аналог IBE?
...
Рейтинг: 0 / 0
Переменные ХП
    #40060976
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax
Подскажите, пожалуйста, в какой таблице хранятся описания переменных (которые DECLARE VARIABLE) триггеров и ХП? В "RDB$PROCEDURE_PARAMETERS" и "RDB$FUNCTION_ARGUMENTS" лежат только входные/выходные параметры ХП и функций соответственно.
Зачем оно тебе ?
В таблицах их нет, но есть в RDB$DEBUG_INFO.
Это системный блоб внутреннего формата, для него есть текстовый фильтр:
Код: sql
1.
2.
3.
set blob all;
select rdb$procedure_name, rdb$debug_info from rdb$procedures where ...;
select rdb$trigger_name, rdb$debug_info from rdb$triggers where ...;
...
Рейтинг: 0 / 0
Переменные ХП
    #40060986
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
fb30>isql employee
Database: employee, User: SYSDBA
SQL> set blob all;
SQL> select rdb$debug_info from rdb$procedures where rdb$procedure_name = 'DELETE_EMPLOYEE';

   RDB$DEBUG_INFO
=================
           1a:1ea
==============================================================================
RDB$DEBUG_INFO:
                Parameters:
                    Number Name                             Type
                --------------------------------------------------
                         0 EMP_NUM                          INPUT

                Variables:
                    Number Name
                -------------------------------------------
                         0 ANY_SALES
...
...
Рейтинг: 0 / 0
Переменные ХП
    #40060999
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишу тестирование метаданных. Таблиц, ХП, функций и т.д. Сейчас вот решил проверять, где в параметрах и переменных используются домены, а где тип SQL.

hvlad - спасибо за наводку, буду смотреть через DEBUG_INFO.

Симонов Денис, про подпроцедуры и подфункции понятно. Тогда получается, что если они есть в ХП, то их нельзя увидеть в RDB$PROCEDURES? Конечно разработчикам виднее, и это наверно мало кому нужно на самом деле, но имхо, было бы логично вынести все эти вложенные процедуры/функции с параметрами в RDB$PROCEDURES/RDB$FUNCTIONS, в том числе и параметры в отдельные таблицы.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061006
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxСимонов Денис, про подпроцедуры и подфункции понятно. Тогда получается, что если они есть в ХП, то их нельзя увидеть в RDB$PROCEDURES?

да, конечно. Кстати процедуры и функции пакетов там есть
...
Рейтинг: 0 / 0
Переменные ХП
    #40061012
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax
решил проверять, где в параметрах и переменных используются домены, а где тип SQL.
rdb$dependencies не достаточно для этого ?
...
Рейтинг: 0 / 0
Переменные ХП
    #40061022
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
rdb$dependencies не достаточно для этого ?

А чем эта таблица может помочь? Там же нет ни имен переменных, ни зависимостей, если это это тип SQL.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061043
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CyberMax
Сейчас вот решил проверять, где в параметрах и переменных используются домены, а где тип SQL.


Есть компоненты

https://www.clevercomponents.com/products/dbcvcl/index.asp

В них есть метод TIbExParser.ParseLocalVariables, куда можно впихнуть проверку.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061050
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax
hvlad
rdb$dependencies не достаточно для этого ?

А чем эта таблица может помочь? Там же нет ни имен переменных, ни зависимостей, если это это тип SQL.
Увидишь процедуры\триггеры, зависящие от доменов. Не то ?
...
Рейтинг: 0 / 0
Переменные ХП
    #40061084
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
Увидишь процедуры\триггеры, зависящие от доменов. Не то ?

Не то. Мне наоборот, надо найти процедуры/триггеры, которые не используют домены.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061086
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

Не подходит. Мне надо это в PSQL.

P.S. Спасибо за ответы, где смотреть понял, этого достаточно.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061100
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxМне наоборот, надо найти процедуры/триггеры, которые не используют домены.

У них число зависимостей от доменов будет нулевым. Логично?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переменные ХП
    #40061101
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
У них число зависимостей от доменов будет нулевым. Логично?..

Нет. Если пять параметров, где четыре с доменом, а один - без, это ничего не даст.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061104
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда переформулируй свою хотелку, поскольку "не используют домены" это как раз даст.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переменные ХП
    #40061105
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

ты хочешь чтобы все внутренние переменные использовали домены? Ох, зря ты это...
...
Рейтинг: 0 / 0
Переменные ХП
    #40061110
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще да, желание заменить все стандартные типы
(даже для переменных) доменами - это нечто новое в
отечественном лисапедостроении, о таком ещё не слышал...

P.S. AFAIU, даже без RDB$DEBUG_INFO это не
сильно сложно получить из blr.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переменные ХП
    #40061111
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, он наивно надеется, что ALTER DOMAIN автомагически поменяет типы всех переменных
во всех процедурах.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переменные ХП
    #40061114
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
CyberMax,

ты хочешь чтобы все внутренние переменные использовали домены? Ох, зря ты это...

Что здесь не так? В доках нет никаких указаний, что так делать не надо и наоборот. Разве это не на усмотрение разработчика?
...
Рейтинг: 0 / 0
Переменные ХП
    #40061116
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Вы так говорите, будто я только вчера сел изучать fb. Я прекрасно знаю, что и как происходит при изменении домена.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061117
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

ну, недавно видел базу, где всего штук 20 доменов, и они все "просто домены", т.е. без условий, ограничений, дефолтов и прочего.
И там вот такое:
CREATE DOMAIN D_BIGINT AS BIGINT;
CREATE DOMAIN D_DATE AS DATE;
и т.д.

Что интересно - в ЯП типа дельфей редко когда увидишь объявление типа
type
MyInteger = integer;
и дальше все целые числа типа MyInteger. Понятно что в дельфях ограничения на тип не навесишь, а тут запросто.
Но всё равно.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061122
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
09.04.2021 17:36, kdv пишет:
> Что интересно - в ЯП типа дельфей редко когда увидишь объявление типа
> type
> MyInteger = integer;

если это проперти компонента, то очень часто.
на такой тип вешается свой редактор свойств (Property Editor).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Переменные ХП
    #40061123
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

нет и не будет таких указаний.

Однако надо чувствовать, что использование доменов всегда для выходных аргументов и внутренних переменных может вызывать геморрой при поддержке таких процедур. Домен - это прежде всего централизованное ограничение на значение переменной или столбца таблицы. Вы уверены, что во внутреннем коде ХП вам эти ограничения не вылезут боком? Всякие CHECK проверки нужны разве что для входных аргументов и столбцов таблиц. Остальные проверки проще сделать прямо в самой ХП, и выдать нормальный текст Exception. Для всяких VARCHAR(N) создавать гору доменов под разные случаи конкатенации строк тоже не очень хорошо, лучше по месту определить сколько N там потребуется.

Опять же хотите используйте домены, никто не запрещает. Но зачем вам надо искать где они не используются? Хотите другим запретить использовать переменные без домена?
...
Рейтинг: 0 / 0
Переменные ХП
    #40061127
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv

И там вот такое:
CREATE DOMAIN D_BIGINT AS BIGINT;
CREATE DOMAIN D_DATE AS DATE;
и т.д.


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

Однако, конечно, правильнее смысловая типизация.

Симонов Денис
Вы уверены, что во внутреннем коде ХП вам эти ограничения не вылезут боком?


Мне кажется внутри правильнее объявлять только с "type of" domain.
...
Рейтинг: 0 / 0
Переменные ХП
    #40061134
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

ggreggoryснижает кол-во записей в RDB$FIELDS

не уверен, но вроде бы для внутренних переменных записи в RDB$FIELDS не создаются
...
Рейтинг: 0 / 0
Переменные ХП
    #40061183
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
ggreggory,

ggreggoryснижает кол-во записей в RDB$FIELDS


не уверен, но вроде бы для внутренних переменных записи в RDB$FIELDS не создаются

Нет, конечно. Имелось ввиду использование доменов типа D_INTEGER, D_DATE в полях таблиц.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Переменные ХП
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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