Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Выполнение ХП из скрипта / 10 сообщений из 10, страница 1 из 1
24.01.2005, 18:16
    #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
24.01.2005, 18:23
    #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
24.01.2005, 18:29
    #32881009
Levon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП из скрипта
Не, ошибочка, выполняется, только не возвращается значение параметра, помеченного как OUT в ХП. Помогите с синтаксисом, скорей сего, в нём ошибка. Или какую-нибудь альтернативу киньте, например, как эту ХП в функцию переделать, и как её потом вызвать
...
Рейтинг: 0 / 0
24.01.2005, 18:57
    #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
24.01.2005, 20:26
    #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
24.01.2005, 21:20
    #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
25.01.2005, 09:24
    #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
25.01.2005, 09:29
    #32881505
Александр Спелицин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП из скрипта
LevonМожет, кто-то подскажет, как можно описать хранимую функцию в программе или как возвратить результат хранимой процедурой, но через датасет?
Смотри в сторону Declare Cursor / Open Cursor; Fetch...
...
Рейтинг: 0 / 0
25.01.2005, 10:01
    #32881562
urvas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП из скрипта
Может стоит присвоить какое-то значение параметру перед вызовом процедуры?
...
Рейтинг: 0 / 0
25.01.2005, 18:19
    #32883178
savosin_sergey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнение ХП из скрипта
посмотри на эту страницу
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Выполнение ХП из скрипта / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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