Функция LTRIM('ddddddddddddddd')

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
tvv
Сообщения: 13
Зарегистрирован: 22 фев 2012, 13:00

Функция LTRIM('ddddddddddddddd')

Сообщение tvv » 14 май 2012, 12:03

Добрвй день.

В хранимой процедуре используется вызов функции - LTRIM('dddddddddddddddddddd').
Параметр в этой процедуре имеет такое описание - PARAM_1:CSTRING(255).
Вопрос.
1. Можно ли изменить значение - PARAM_1 на другое, например CSTRING(1000).
2.Можно ли создать похожую процедуру LTRIM('<длина строки 1000 символов>').

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Функция LTRIM('ddddddddddddddd')

Сообщение kdv » 14 май 2012, 15:09

интересный вопрос. какая-то каша у вас, то процедура, то функция...

Как я понимаю, LTRIM это udf. Из какой библиотеки? Потому что тут и кроется ответ на вопрос по поводу замены длины параметра. Если в коде функции она допускает работу с входными параметрами в 1000 символов, без переделки, тогда да, можно сделать LTRIM2 с другой длиной строк.

Про "изменить значение PARAM" - declare external function это всего-лишь объявление. можно удалить и объявить по новой, можно объявить повторно с другим именем, и т.п. Главное - сам код функции, выживет ли он после такого изменения "внешних" параметров.

tvv
Сообщения: 13
Зарегистрирован: 22 фев 2012, 13:00

Re: Функция LTRIM('ddddddddddddddd')

Сообщение tvv » 15 май 2012, 11:05

Это описание функции LTRIM.

DECLARE EXTERNAL FUNCTION LTRIM
CSTRING(255)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';

У меня не получается изменить значение CSTRING(255).
Подскажите, как это сделать?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Функция LTRIM('ddddddddddddddd')

Сообщение Dimitry Sibiryakov » 15 май 2012, 14:52

Запускаешь "Блокнот", открываешь файл ib_udf.sql, выделяешь объявление, копируешь в буфер. Закрываешь файл, создаёшь новый. Вставляешь ранее скопированное объявление. Стрелочками подводишь курсор к числу "255". Клавишей Backspace или Del (в зависимости от того с какой стороны числа ты поставил курсор) удаляешь эти цифры. Потом нажимаешь на клавиатуре "1", "0", "0", "0". То же самое проделываешь и с другим числом. Потом подводишь курсор к концу слова "LTRIM" и нажимаешь клавишу с цифрой "2". Далее в меню выбираешь "Файл"-"Сохранить как...". Тип файла выбираешь "Все файлы", в поле имени вводишь "ltrim2.sql", кликаешь на кнопку "Сохранить". Далее идёшь в каталог "Firebird\bin", запускаешь утилиту isql и соединяешься со своей базой как описано в файле "Getting Started", который можно найти в каталоге "Firebird\doc". Даёшь команду "IN ltrim2.sql;", а затем "COMMIT;". Обращай внимание на точки с запятой. После этого можешь использовать функцию ltrim2 с длиной параметров 1000 символов.

tvv
Сообщения: 13
Зарегистрирован: 22 фев 2012, 13:00

Re: Функция LTRIM('ddddddddddddddd')

Сообщение tvv » 15 май 2012, 15:55

СПАСИБО!!!

tvv
Сообщения: 13
Зарегистрирован: 22 фев 2012, 13:00

Re: Функция LTRIM('ddddddddddddddd')

Сообщение tvv » 15 май 2012, 16:21

Подскажите, пожалуйста.
_______________________________________________________________________
DECLARE EXTERNAL FUNCTION LTRIM
CSTRING(255)
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT 'IB_UDF_ltrim' MODULE_NAME 'ib_udf';
_______________________________________________________________________
1. MODULE_NAME 'ib_udf' - это стандатное имя модуля или его создали предшественники.
2. RETURNS CSTRING(255) FREE_IT . Что означает значение FREE_IT ???
3. CSTRING(255) . Значение в 255 символов определено из каких-то соображений ???

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Функция LTRIM('ddddddddddddddd')

Сообщение kdv » 15 май 2012, 21:16

1. MODULE_NAME 'ib_udf' - это стандатное имя модуля или его создали предшественники.
вы документацию читали? или еще что-нибудь. про udf вообще, что это такое, что такое dll, и так далее?
Что означает значение FREE_IT ???
открываете ibase.ru, либо в поиске (вверху) вводите free_it, либо открываете сразу FAQ, либо читаете статью Кукарцева "как научиться ...."
Значение в 255 символов определено из каких-то соображений ???
эти функции существуют уже лет 15, так что на ваш вопрос ответа, скорее всего, уже не будет.

Ответить