powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Выполнение ХП из скрипта
10 сообщений из 10, страница 1 из 1
Выполнение ХП из скрипта
    #32880973
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, спасайте!
Хочу выполнить ХП, которая не возвращает резалтсет, а только производит некоторые действия в базе. Также она должна возвратить одно некоторое значение через параметр. Пишу следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare copy_templ procedure for branch.up_copy_template
a_tpl_id=:a_tpl_id, i_ID_SUB= :gi_ID_SUB, new_tpl_id=:new_tpl_id
using sqlca;
execute copy_templ;

объявление процедуры:

create procedure branch.up_copy_template(
	in a_tpl_id numeric( 10 ),
	in i_id_sub integer,
	out new_tpl_id numeric( 10 )) .......

В результате ничего не возвращается и не выполняется вообще. В книгах древних описано всё криво и примитивно, а в хелпе тоже не лучше. Помогите, люди добрые! PB 9.6533, ASA 5.5.04
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32880990
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LevonЛюди, спасайте!
Хочу выполнить ХП, которая не возвращает резалтсет, а только производит некоторые действия в базе. Также она должна возвратить одно некоторое значение через параметр. Пишу следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare copy_templ procedure for branch.up_copy_template
a_tpl_id=:a_tpl_id, i_ID_SUB= :gi_ID_SUB, new_tpl_id=:new_tpl_id
using sqlca;
execute copy_templ;

объявление процедуры:

create procedure branch.up_copy_template(
	in a_tpl_id numeric( 10 ),
	in i_id_sub integer,
	out new_tpl_id numeric( 10 )) .......

В результате ничего не возвращается и не выполняется вообще. В книгах древних описано всё криво и примитивно, а в хелпе тоже не лучше. Помогите, люди добрые! PB 9.6533, ASA 5.5.04

Даже если ничего не выполнятся, то в sqlca устанавливается код ошибки последней операции.
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881009
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не, ошибочка, выполняется, только не возвращается значение параметра, помеченного как OUT в ХП. Помогите с синтаксисом, скорей сего, в нём ошибка. Или какую-нибудь альтернативу киньте, например, как эту ХП в функцию переделать, и как её потом вызвать
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881056
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте вот так:
Код: plaintext
1.
2.
3.
declare copy_templ procedure for branch.up_copy_template
a_tpl_id=:a_tpl_id, i_ID_SUB= :gi_ID_SUB, new_tpl_id=:new_tpl_id OUTPUT
using sqlca;
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881156
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть причина, по которой вы не используете RPC?

Код: plaintext
1.
// объявление
SUBROUTINE up_copy_template(decimal a_tpl_id, long i_id_sub, ref decimal new_tpl_id) RPCFUNC ALIAS FOR "branch.up_copy_template"

Код: plaintext
1.
2.
3.
4.
5.
// вызов
decimal{ 0 }/*?*/ ld_tpl_id, ld_new_tpl_id
long li_id_sub

sqlca.up_copy_template (ld_tpl_id, li_id_sub, ld_new_tpl_id)
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881196
Guest01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Знакомо. В свое время, с разными версиями PB (6-9) и ASA(5-8) + ODBC пытались использовать DECLARE для процедур с out параметрами.
Не вышло. Перешли на RPC.
Похоже, что дело в связке ODBC - PB.
Однако, начиная с некоторого PB (вроде с 9.02) заявлен параметр подключения "PBNewSPInvocation" который, судя по описанию, позволяет
использовать OUTPUT параметры в DECLARE процедур при подключении через ODBC.
См. Help "ODBC DECLARE and EXECUTE with PBNewSPInvocation"
...
DECLARE logical_procedure_name PROCEDURE FOR
procedure_name
@param1 = value, @param2 = value2,
@PARAM3 = VALUE3 OUTPUT
...
... Use the OUT or OUTPUT keyword to obtain the value of the output parameter.
Хотя заставить работать пока тоже не удалось.

P.S.
RPC вызов точно спасет.
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881490
Levon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to ASCRUS:попробуйте вот так:
declare copy_templ procedure for branch.up_copy_template
a_tpl_id=:a_tpl_id, i_ID_SUB= :gi_ID_SUB, new_tpl_id=:new_tpl_id OUTPUT
using sqlca;

Это было первым, что я пробовал. Но на этапе компиляции это не кушает ODBC. Непонятно почему.
to PL99:Есть причина, по которой вы не используете RPC?
Да, есть. Насколько я знаю, данное описание процедуры должно быть использовано в объекте транзакции. Однако у нас практикуется параллельное написание программ, а объект транзакции как раз находится не в моей библиотеке. Так что на крайний случай пригодится, но не желательно.
Может, кто-то подскажет, как можно описать хранимую функцию в программе или как возвратить результат хранимой процедурой, но через датасет?
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881505
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LevonМожет, кто-то подскажет, как можно описать хранимую функцию в программе или как возвратить результат хранимой процедурой, но через датасет?
Смотри в сторону Declare Cursor / Open Cursor; Fetch...
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32881562
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может стоит присвоить какое-то значение параметру перед вызовом процедуры?
...
Рейтинг: 0 / 0
Выполнение ХП из скрипта
    #32883178
Фотография savosin_sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотри на эту страницу
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Выполнение ХП из скрипта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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