powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение значиния out-параметра хранимой процедуры...
17 сообщений из 17, страница 1 из 1
Получение значиния out-параметра хранимой процедуры...
    #34013355
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в коде получить значение out-параметра хранимой процедуры?

А именно, дано: PowerBuilder 9.0, Adaptive Server Anywhere 8.0.2
Хранимая процедура имеет следующий вид:

create procedure dbo.Test(in ad_base numeric(15), out ad_newPK numeric(15))
begin
set ad_newPK = ad_base + 1;
end;

Вопрос - как вызвать данную хранимую процедуру из Билдера с воможностью получения ad_newPK?
Вариант, типа, "SUBROUTINE dbo.Test (decimal ad_base, REF decimal ad_newPK) RPCFUNC" не подходит...

Найденый в хелпе вариант declare&execute для ASA не привнес ясности:
DECLARE logical_procedure_name PROCEDURE FOR
{@rv = } SQL_Server_procedure_name
@Param1 = value1, @Param2 = value2 , ...
{USING transaction_object};

Спасибо.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34013406
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
  DECLARE fff PROCEDURE FOR {имя процедуры на сервере}  
           @пер1 = :a1,   
           .........
           @перn = :an OUTPUT (если возвратное значение) ;
  EXECUTE fff; 			
  FETCH fff INTO :xn ; (считывание переменной)
  CLOSE fff; 
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34013930
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoxa
Вариант, типа, "SUBROUTINE dbo.Test (decimal ad_base, REF decimal ad_newPK) RPCFUNC" не подходит...
Почему? Самый лучший вариант.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34013960
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп wrote:

> Почему? Самый лучший вариант.

Российская традиция: делать через зад всё, кроме клизмы .
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044702
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Филипп Antoxa
Вариант, типа, "SUBROUTINE dbo.Test (decimal ad_base, REF decimal ad_newPK) RPCFUNC" не подходит...
Почему? Самый лучший вариант.

Приложение работает должно работать с тремя СУБД (ASA, Oracle, MSSQL). Упомянутая хранимая процедура присутствует только в ASA.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044757
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А изменить процедуру и не использовать OUT параметры?

Код: plaintext
1.
2.
3.
4.
create procedure dbo.Test(in ad_base numeric( 15 ))
begin
set ad_newPK = ad_base +  1 ;
SELECT ad_newPK;
end;

И соответственно получать значение через FETCH или DS. Будет работать универсально.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044821
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк
Код: plaintext
1.
2.
3.
4.
5.
6.
  DECLARE fff PROCEDURE FOR {имя процедуры на сервере}  
           @пер1 = :a1,   
           .........
           @перn = :an OUTPUT (если возвратное значение) ;
  EXECUTE fff; 			
  FETCH fff INTO :xn ; (считывание переменной)
  CLOSE fff; 


Предложенный вариант подходит для MSSQL, но не для ASA.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044866
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EstetsА изменить процедуру и не использовать OUT параметры?

Код: plaintext
1.
2.
3.
4.
create procedure dbo.Test(in ad_base numeric( 15 ))
begin
set ad_newPK = ad_base +  1 ;
SELECT ad_newPK;
end;

И соответственно получать значение через FETCH или DS. Будет работать универсально.
Допустим, изменение процедуры невозможно.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044879
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoxa Филипп Antoxa
Вариант, типа, "SUBROUTINE dbo.Test (decimal ad_base, REF decimal ad_newPK) RPCFUNC" не подходит...
Почему? Самый лучший вариант.

Приложение работает должно работать с тремя СУБД (ASA, Oracle, MSSQL). Упомянутая хранимая процедура присутствует только в ASA.

Ну и что? Почему при этом нельзя использовать RPC?

Сделать три transaction object и объявить в каждом соответствующие RPC.

Сделать все три transaction object наследниками одного универсального.

Создавать один из трех объектов в зависимости от СУБД и замещать SQLCA.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044953
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗоринАндрей Antoxa Филипп Antoxa
Вариант, типа, "SUBROUTINE dbo.Test (decimal ad_base, REF decimal ad_newPK) RPCFUNC" не подходит...
Почему? Самый лучший вариант.

Приложение работает должно работать с тремя СУБД (ASA, Oracle, MSSQL). Упомянутая хранимая процедура присутствует только в ASA.

Ну и что? Почему при этом нельзя использовать RPC?

Сделать три transaction object и объявить в каждом соответствующие RPC.

Сделать все три transaction object наследниками одного универсального.

Создавать один из трех объектов в зависимости от СУБД и замещать SQLCA.
Меня не интересуют "обходные маневры". Меня интересует ответ по существу на поставленный вопрос.

Неужели никто никогда не пробовал достучаться до out-параметра хранимой процедуры через DECLARE/EXECUTE на ASA?!
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044968
Estets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntoxaНеужели никто никогда не пробовал достучаться до out-параметра хранимой процедуры через DECLARE/EXECUTE на ASA?!
А смысл? На MS, ORACLE, Sybase невохможно использовать один серверный скрипт, соответственно и клиентская часть будет отличаться. И попытаться найти универсальное решение только из академического интереса...
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044994
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PBNew SPInvocation

Ответ по существу на поставленный вопрос:
Embedded SQL это зло. Пытаться заставить его работать - это и есть "обходные маневры".
Все можно сделать через datawindow, RPC и stored procedures. На клиенте SQL-кода должно быть минимум.
В идеале - только stored proc для DW и DS select,
stored proc для DW Update и stored proc через RPC для всего остального.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34044999
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntoxaНеужели никто никогда не пробовал достучаться до out-параметра хранимой процедуры через DECLARE/EXECUTE на ASA?! PowerBuilder HelpODBC EXECUTE
Database stored procedures that perform only updates and do not return a result set are handled in much the same way as procedures that return a result set. The only difference is that after the EXECUTE procedure_name statement executes, no result set is pending, so a CLOSE statement is not required.
......

Example 2
This example illustrates how to pass parameters to a database stored procedure. It assumes the default transaction object (SQLCA) has been assigned valid values and a successful CONNECT has been executed. Emp_id_var was set to 691 elsewhere.
// get_employee is a database stored procedure.
// Declare the procedure.
DECLARE get_emp_proc PROCEDURE FOR
get_employee @emp_id_parm = :emp_id_var;
// Declare a destination variable for emp_name.
string emp_name_var
// Execute the stored procedure using the
// current value for emp_id_var.
EXECUTE get_emp_proc;
// Test return code to see if it worked.
if SQLCA.sqlcode = 0 then
// Since we got a row, fetch it and display it.
FETCH get_emp_proc INTO :emp_name_var;
// Display the employee name.
MessageBox("Got my employee!",emp_name_var)
// You are all done, so close the procedure.
CLOSE Get_emp_proc;
end if

Antoxa ЗоринАндрейСоздавать один из трех объектов в зависимости от СУБД и замещать SQLCA.
Меня не интересуют "обходные маневры". Меня интересует ответ по существу на поставленный вопрос.Вам дали грамотныей совет по проектированию Вашей системы, почему бы Вам к нему не прислушаться?
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34045015
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntoxaНайденый в хелпе вариант declare&execute для ASA не привнес ясности:
DECLARE logical_procedure_name PROCEDURE FOR
{@rv = } SQL_Server_procedure_name
@Param1 = value1, @Param2 = value2 , ...
{USING transaction_object};
Приведен фрагмент не для ASA, а для Sybase Adaptive Server Enterprise

AntoxaСпасибо.На здоровье ;-)
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34045068
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL99 Antoxa ЗоринАндрейСоздавать один из трех объектов в зависимости от СУБД и замещать SQLCA.
Меня не интересуют "обходные маневры". Меня интересует ответ по существу на поставленный вопрос.Вам дали грамотныей совет по проектированию Вашей системы, почему бы Вам к нему не прислушаться?
Я не занимаюсь проектированием системы и, соответственно, не могу воспользоваться данным советом.
PL99Приведен фрагмент не для ASA, а для Sybase Adaptive Server Enterprise
Виноват, был невнимателен.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34045105
Antoxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗоринАндрей PBNew SPInvocation
Спасибо.
...
Рейтинг: 0 / 0
Получение значиния out-параметра хранимой процедуры...
    #34045124
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antoxa wrote:

> Неужели никто никогда не пробовал достучаться до out-параметра хранимой
> процедуры через DECLARE/EXECUTE на ASA?!

Не пробовали, потому что непонятен смысл данного изврата.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Получение значиния out-параметра хранимой процедуры...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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