powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Параметры для procedure
16 сообщений из 16, страница 1 из 1
Параметры для procedure
    #38970582
Можно ли в FB задать параметры для ХП, чтобы они были входными и выходными одновременно?
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970598
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Сидоренко,

нет
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970659
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Сидоренко> Можно ли в FB задать параметры для ХП, чтобы
Антон Сидоренко> они были входными и выходными одновременно?

Нет. И даже одноимённые нельзя.
А для чего понадобилось-то?
И в PSQL, и в SQL это не сильно
экономит буквы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970687
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Гаджимурадов Рустам!
You wrote on 28 мая 2015 г. 13:10:23:

Гаджимурадов Рустам> А для чего понадобилось-то?у Оракела можно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970691
Гаджимурадов РустамА для чего понадобилось-то?
И в PSQL, и в SQL это не сильно экономит буквы.
При переносе процедур с оракл, экономит время
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970692
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон СидоренкоМожно ли в FB задать параметры для ХП, чтобы они были входными и выходными одновременно?

Код: sql
1.
execute procedure MY_PROC(:PARAM) returning_values :PARAM
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970709
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Сидоренко> При переносе процедур с оракл, экономит время

А, тогда да. Просто воркэраунд легкий, короткий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970741
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон СидоренкоПри переносе процедур с оракл, экономит время
Зато отучает от дурного стиля - писать процедуры с побочными эффектами.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38970834
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон СидоренкоМожно ли в FB задать параметры для ХП, чтобы они были входными и выходными одновременно?
Хороший вопрос.

Нельзя. Но если очень хочется, то можно :)

Это очень сильное колдунство
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create procedure sp_in_out(A INTEGER)
 returns(B INTEGER)
as
begin
 if(A IS NULL)then A=GEN_ID(GEN_ID_NUM,1);

 B=A;
end



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
option explicit

dim cn
set cn=createobject("ADODB.Connection")

call cn.Open("provider=LCPI.IBProvider.3;location=localhost:d:\database\ibp_test_fb25_d3.gdb;user id=gamer;password=vermut;auto_commit=true")

dim cmd

set cmd=createobject("ADODB.Command")

cmd.ActiveConnection=cn

cmd.CommandText="exec SP_IN_OUT :a,:a"

cmd("a").value=null

cmd.execute

wscript.echo cmd("a").value

cmd("a").value=-1

cmd.execute

wscript.echo cmd("a").value



вывод:
Код: plaintext
1.
783
-1
...
Рейтинг: 0 / 0
Параметры для procedure
    #38971160
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий> + Это очень сильное колдунство

Это не колдунство, параметров всё равно два.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38971216
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКоваленко Дмитрий> + Это очень сильное колдунство

Это не колдунство, параметров всё равно два.

На финальной стадии (параметры объекта запроса) он один - "a" :)

Понятно, что притянуто за уши - (в тексте запросе все равно приходится указывать параметр два раза). Но тут ничего не поделаешь.

Меня просто заинтересовала сама возможность свести к одному именованному (IN-OUT) параметру. Ну уровне клиента, разумеется.

----
Вообще это извращение реализовывалось для поддержки запросов типа "insert .... (col1) values(:a) returning col1 into :a;"

Ну а с SP - это просто до кучи.
...
Рейтинг: 0 / 0
Параметры для procedure
    #38971230
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий> в тексте запросе все равно приходится указывать параметр два раза

Не только в тексте, но и в DDL.

> Меня просто заинтересовала сама возможность свести к одному
> именованному (IN-OUT) параметру. Ну уровне клиента, разумеется.

FB тут не при чём, все адекватные либы это умеют (должны).

> Вообще это извращение реализовывалось для поддержки запросов типа
> "insert .... (col1) values(:a) returning col1 into :a;"

Запросы типа "f1 = :a or f2 = :a" или "f1 = :a or :a = 0"
и т.п. появились задолго до returning-a.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38971276
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКоваленко Дмитрий> в тексте запросе все равно приходится указывать параметр два раза

Не только в тексте, но и в DDL.
Ну в это можно было и не тыкать :)
Гаджимурадов Рустам> Вообще это извращение реализовывалось для поддержки запросов типа
> "insert .... (col1) values(:a) returning col1 into :a;"

Запросы типа "f1 = :a or f2 = :a" или "f1 = :a or :a = 0"
и т.п. появились задолго до returning-a.

Ты говоришь про многократное использование в качестве IN-параметра. С этим все ясно (хотя есть нюанс в виде вывода типа данных) и не интересно :)
...
Рейтинг: 0 / 0
Параметры для procedure
    #38971287
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коваленко Дмитрий> Ну в это можно было и не тыкать :)

Это тебе не тыкать. А ТСу именно это и важно. :)

> Ты говоришь про многократное использование в качестве IN-параметра.

Почему же, необязательно IN, примеры же не про IN.
C IN вообще другая история, это как раз библиотеки
обычно не поддерживают, только на уровне макросов.

> С этим все ясно (хотя есть нюанс в виде вывода типа данных)

О чём речь, какой нюанс?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Параметры для procedure
    #38971376
Коваленко Дмитрий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамКоваленко Дмитрий>
> Ты говоришь про многократное использование в качестве IN-параметра.
Почему же, необязательно IN, примеры же не про IN.
C IN вообще другая история, это как раз библиотеки
обычно не поддерживают, только на уровне макросов.


Под "IN" подразумевается Input-направление.

Гаджимурадов Рустам> С этим все ясно (хотя есть нюанс в виде вывода типа данных)
О чём речь, какой нюанс?


Это я про то, что при многократном использовании именованного параметра (которые сервер не поддерживает и они заменяются компонентами доступа на маркеры '?' - неименованные/позиционные параметры) нужно выводить тип и размер, исходя из типов и размеров, назначаемых сервером этим "неименованным" параметрам.

То есть (к примеру) в выражении "integer_column=:a or short_column=:a or bigint_column=:a" параметру "a" надо дать тип "bigint".

А если параметр в одном месте запроса используется как Input, а в другом как Ouput, то в результирующем описании будет выведен InputOutput параметр.

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


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