powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Съедается тело внешних процедур и функций
6 сообщений из 6, страница 1 из 1
Съедается тело внешних процедур и функций
    #40037058
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert наивно полагает что у внешних функций и процедур нет тела и при открытии их в редакторе просто съедает их.
На самом же деле тело внешней процедуры или функции хранится в столбцах RDB$PROCEDURE_SOURCE и RDB$FUNCTION_SOURCE.

Вот как это выглядит в коде

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR ALTER FUNCTION GET_JSON (
    NAME VARCHAR(60))
RETURNS VARCHAR(60)
EXTERNAL NAME 'com.some.Json.makeResultAsJson(String)'
ENGINE JAVA
AS q'!
  SELECT a, b, c from SOM_TABLE WHERE d = ?
!';



То есть тело если оно есть идёт после ключевого слова AS и представляет собой произвольную строку, которая внешняя процедура или функция может использовать по своему усмотрению. Строку можно задать с помощью обычных апострофов или с помощью альтернативного синтаксиса с Q.

PS. Как определить использовался ли альтернативный синтаксис я не нашёл, но по умолчанию он удобней в данном случае
...
Рейтинг: 0 / 0
Съедается тело внешних процедур и функций
    #40037078
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как этот самый engine JAVA подцепить к серверу, чтобы потестить?
...
Рейтинг: 0 / 0
Съедается тело внешних процедур и функций
    #40037132
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

да там не обязательно JAVA. Оно и для обычных ENGINE UDR воспроизводится, которые также могут произвольное тело заданное строкой использовать.

Но если интересно покопаться именно с Java то описание вот здесь https://github.com/FirebirdSQL/fbjava
Подключатся это всё мягко говоря с превеликим геморроем.
...
Рейтинг: 0 / 0
Съедается тело внешних процедур и функций
    #40037314
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис

То есть тело если оно есть идёт после ключевого слова AS и представляет собой произвольную строку


Наткнулся: если вставить в эту строку одиночный апостроф, то сервер ругается на missing close quote.
Т.е., эта строка еще как-то и парсится сервером.
...
Рейтинг: 0 / 0
Съедается тело внешних процедур и функций
    #40038550
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде везде исправил.
...
Рейтинг: 0 / 0
Съедается тело внешних процедур и функций
    #40038808
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert,

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


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