powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / не передаются значения параметров в SP
14 сообщений из 14, страница 1 из 1
не передаются значения параметров в SP
    #35263749
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Связка Power Builder 9.0 + MySQL 5.0xxx (ODBC MySql driver 3.51)

Вызываю и передаю значение 5, и вернуться должно 5, а возвращается l_ret = 0
Помогите!!!

При вызове сохраненой процедуры

long i_p1
i_p1 = 5
DECLARE sp PROCEDURE FOR sp_simple1 @j = :i_p1;
EXECUTE sp;

IF this.SQLCode <> 0 Then
//ErrMsgBox("sp_oneparam", this.SQLCode, this.SQLDBCode, this.SQLErrText)
ELSE
FETCH sp INTO :l_ret; // в этом месте l_ret = 0 - ниже см. тело sp_simple1
End If

----------
sp_simple1:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_simple1`(j integer)
BEGIN
SELECT j;
END
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35263822
Guest01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DECLARE sp PROCEDURE FOR sp_simple1 @j = :i_p1 OUTPUT ;
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35263905
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал OUTPUT - не помогло.
В SP сделал проверку:
if j!=0 then
j = -100;
end if;

j осталась = 0 ... я в шоке, (©)"что делать?"
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35263917
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. я пришел к выводу, что j = null. Это подтверждается, если передаваемую переменную добавить в таблицу, то новая запись содержит null.

Глюки MySQL при работе с PB? У меня нет других предположений ...
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35263972
Guest01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, я не знаю MySQL.
Однако, если посмотреть на другие СУБД, у Вас в определении процедуры
параметр указан как Input, т.е. он только для чтения.
Возможно, что при определении процедуры, надо указать, что параметр передается по ссылке, а не по значению.
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264123
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно глянуть на трейс?

Может попробовать DisableBind=1 ?

и еще там были какие-то StripParmNames и CallEscape.
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264202
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest01К сожалению, я не знаю MySQL.
Однако, если посмотреть на другие СУБД, у Вас в определении процедуры
параметр указан как Input, т.е. он только для чтения.
Возможно, что при определении процедуры, надо указать, что параметр передается по ссылке, а не по значению.

К сожалению я тоже не знаю MySQL - пока ..
ОК, я сделал уже:
1) IN одну переменную в SP, OUT другую. Затем Второй просто присваиваю первую.
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_simple2`(in j integer, out k integer)
BEGIN
SET k = j;
Select k; /* для Fetch исключительно!*/
END

FETCH sp INTO :m; // Fetch "тащит" то, что вернули select'ом !!! (см. help), а вот переменная k остается 0(null), так же, впрочем, как и m=0(null).
Все это меня убеждает в мысли, что не передаются парметры (вернее передаются как null). А вот вернуть, через тот же Fetch удается, если переменной присвоили значение внутри SP.
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264205
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗоринАндрейможно глянуть на трейс?

Может попробовать DisableBind=1 ?

и еще там были какие-то StripParmNames и CallEscape.

1.Как сделать trace?
2.Параметры MySQL или ODBC соединения(драйвера)???
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264280
Guest01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
'Убейте' "Select k;" в процедуре. Именно его Вы и FETCH'ете.
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264531
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest01'Убейте' "Select k;" в процедуре. Именно его Вы и FETCH'ете.

Это лично Вам:
To access rows returned in a result set, use the FETCH statement the same way you use it for cursors. The FETCH statement can be executed after any successful EXECUTE statement for a procedure that returns a result set.

Дело не в том чем я пытаюсь получить значение. Дело как раз в том, что не получает SP переменные, вернее получает, их значение null.
А гадать чтобы мне сделать не надо. Полтора дня на это убил, все мыслимые и фантастические варианты перепробовал. Если есть у кого-то конкретные предложения, то буду рад. А так вердикт такой:
PB 9.0 с MySQL 5.0 через ODBC 3.51 значения передаваемых переменных в SP всегда null. ))) во как
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264576
Guest01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тогда это лично Вам:
PBNewSPInvocation database parameter
Output parameters might not be returned when you use an embedded SQL command to call a stored procedure. You can set PBNewSPInvocation to 'Yes' to use an alternative method to invoke a stored procedure. The behavior of the PowerBuilder ODBC driver when this DBParm is set is consistent with the default behavior of the OLE DB and JDBC drivers.

Исчезаю, чтоб Вас не раздражать.
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264672
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest01
Исчезаю, чтоб Вас не раздражать.

не-не-не, не раздражаете, наоборот, в "споре рождается истина". Спасибо!
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35264762
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Example 1

To set the parameter for all connections, add the following line to every relevant section (such as ;IBM DB2/NT 2.1 DB2CLI for a DB2 connection on Windows) in your pbodb105.ini file:
PBNewSPInvocation='Yes'

For more information about editing pbodb105.ini, see the Appendix in Connecting to Your Database.

You can also set the parameter at runtime. For example:
SQLCA.DbParameter="PBNewSPInvocation='Yes'"

The value that is set at runtime overrides the value in the pbodb105.ini file.


------
Похоже это верно для версии 10.5 и наверное выше ( у мну 9.0.
Объект SQLCA не имеет такого свойства.
...
Рейтинг: 0 / 0
не передаются значения параметров в SP
    #35265274
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Звиняйте что отвлекал Вас, "дело было не в бабине.."
нашел баг, сам виноват.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / не передаются значения параметров в SP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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