powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Комрады, вопрос по декларированию процедуры из скрипта ...
7 сообщений из 7, страница 1 из 1
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35770650
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартная декларация:
DECLARE spu_xyz PROCEDURE FOR spu_xyz;
EXECUTE spu_xyz;
CLOSE spu_xyz;

пишу окно в котором название процедуры - переменная т.е. что-то типа такого:

string s_procedure_name
s_procedure_name = dw_1.getitemstring(dw_1.getrow(), 'procedure_name')

вообшем-то уже всё написал используя:
.... бла-бла-бла ...
DECLARE spu_procedure DYNAMIC PROCEDURE FOR SQLSA ;
... и т.д.

всё работает, но внезапно возник вопрос, а можно ли, и если да, шо там за хитрый синтакс, использовать стандартную декларацию процедуры ... типа:
DECLARE spu_xyz PROCEDURE FOR :s_procedure_name ;
EXECUTE spu_xyz;
CLOSE spu_xyz;

Если у кого есть настроение ответить, зараннее пасиба.
...
Рейтинг: 0 / 0
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35770705
18-я весна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
voronk а можно ли, и если да, шо там за хитрый синтакс, использовать стандартную декларацию процедуры ... типа:
DECLARE spu_xyz PROCEDURE FOR :s_procedure_name ;
EXECUTE spu_xyz;
CLOSE spu_xyz;


Через ":" можно объявлять только параметры процедуры (если они есть).
...
Рейтинг: 0 / 0
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35770730
edmikeca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я Вас правильно понял, то Вы динамически хотите менять название процедуры? Если да, то была у меня аналогичная проблема. В общем я сделал процедуру заглушку, обьявил ее стандартным способом и туда передавал имя реальной процедуры. Уж не знаю, хорошо это было или плохо.
...
Рейтинг: 0 / 0
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35771162
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я в некоторых случаях делаю создание datastore на процедуре
Код: plaintext
1.
2.
3.
4.
as_text_sql = '1 execute procname;1 @param1=1,@param2=0'
ls_ds_syntax = SQLCA.SyntaxFromSQL( as_text_sql, "", ls_ErrorMessage)
ads_.Create(ls_ds_syntax, ls_ErrorMessage)
ads_.SetTransObject(SQLCA)
ads_.Retrieve()
нормально работает, и когда есть результат возвращает
можно и любую процедуру подцепить и запрос любой подпихнуть
...
Рейтинг: 0 / 0
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35774535
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
edmikecaЕсли я Вас правильно понял, то Вы динамически хотите менять название процедуры? Если да, то была у меня аналогичная проблема. В общем я сделал процедуру заглушку, обьявил ее стандартным способом и туда передавал имя реальной процедуры. Уж не знаю, хорошо это было или плохо.

1. можно на ты и с маленькой буквы ...
2. спасибо за мысль.
...
Рейтинг: 0 / 0
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35774548
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VanoRя в некоторых случаях делаю создание datastore на процедуре
Код: plaintext
1.
2.
3.
4.
as_text_sql = '1 execute procname;1 @param1=1,@param2=0'
ls_ds_syntax = SQLCA.SyntaxFromSQL( as_text_sql, "", ls_ErrorMessage)
ads_.Create(ls_ds_syntax, ls_ErrorMessage)
ads_.SetTransObject(SQLCA)
ads_.Retrieve()
нормально работает, и когда есть результат возвращает
можно и любую процедуру подцепить и запрос любой подпихнуть

Ну дык это когда надо больше чем один рекорд придащить обратно, мне retrieve() не требуетса, у меня обратно возврашаетса int и string:

1, 'Всё впорядке, кол-во рекордов:35'

или

0, 'Краткое объяснение в чё проблема'
...
Рейтинг: 0 / 0
Комрады, вопрос по декларированию процедуры из скрипта ...
    #35774584
Фотография voronk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем 'Война окончена - всем спасибо.'
Спасибо ребята что поучаствовали, оставлю так как написал с начала, вот, может кому пригодиЦЦа:

l_row = dw_1.getrow()

s_procedure_name = dw_1.getitemstring(l_row, 'procedure_name')
l_import_batch = dw_1.getitemstring(l_row, 'import_batch')
s_file_name = dw_1.getitemstring(l_row, 'file_name')

/* Процедура имеет 3 параметра их и пассую ... */

s_sql = 'execute ' + s_procedure_name + ' @user_name=' + '?' + ',' + ' @import_batch=' + '?' + ',' + ' @file_name=' + '?'

PREPARE SQLSA FROM :s_sql using sqlca;

DESCRIBE SQLSA INTO SQLDA ;

DECLARE spu_procedure DYNAMIC PROCEDURE FOR SQLSA ;

i_rc = SQLDA.SetDynamicParm(1, s_user_name)
i_rc = SQLDA.SetDynamicParm(2, l_import_batch)
i_rc = SQLDA.SetDynamicParm(3, s_file_name)

EXECUTE DYNAMIC spu_procedure USING DESCRIPTOR SQLDA ;

IF sqlca.Sqlcode <> 0 THEN
Messagebox('Error', 'Error Code: ' + String(Sqlca.Sqlcode) + '~nError Text: ' + sqlca.sqlerrtext, exclamation!)
ELSE
FETCH spu_procedure INTO :i_res, :s_msg;

IF sqlca.Sqlcode <> 0 THEN
Messagebox('Error', 'Error Code: ' + String(Sqlca.Sqlcode) + '~nError Text: ' + sqlca.sqlerrtext, exclamation!)
END IF
END IF

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


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