Получение параметров из хранимой проц.

ElenaNF

Новичок
Получение параметров из хранимой проц.

Подскажите, пожалуйста, как получить параметры, возвращаемые хранимой процедурой SQL-сервера:
if ...
begin
...
return 0
end else return 1
В php коде $res=mssql_execute($sp)
 

Фанат

oncle terrible
Команда форума
что - точнее?
раньше никогда к SQL серверу не обращалась?
 

ElenaNF

Новичок
обращалась.
например mssql_result($res, 0, а тут что);
mssql_fetch_assoc($res) выдает ошибку
 

ElenaNF

Новичок
пробовала: Warning: mssql_fetch_assoc(): supplied argument is not a valid MS SQL-result resource in C:\Inetpub\wwwroot\stationconfigedit\ConfigEdit11.php on line 27
 

Фанат

oncle terrible
Команда форума
не возвращает твоя хранимая процедура никаких параметров значит.
а возвращает ошибку.
значит, и получать нечего.

сначала процедуру выполни без ошибок, а потом уже и параметры получай.
 

ElenaNF

Новичок
слушай, ну вроде бы процедура нормально выполняется, а ошибка все та же
 

vovik

Новичок
Получение параметра, возвращаемого RETURN, делается так:

PHP:
$stmt = mssql_init('testprocedure');
mssql_bind($stmt, 'RETVAL', $val, SQLINT4);
mssql_execute($stmt);
print $val;
На эту тему можно прочитать много всего интересного в комментах на [m]mssql_execute[/m]
 

Фанат

oncle terrible
Команда форума
я написал глупость.
вовик, похоже, написал правильно
 

IgorGS

Новичок
Автор оригинала: Фанат
я написал глупость.
вовик, похоже, написал правильно
Пол часа под столом, сильный ржач :) комментировать не буду, сами поймут...но рад :)
 

ek-na

Новичок
Автор оригинала: vovik
Получение параметра, возвращаемого RETURN, делается так:

PHP:
$stmt = mssql_init('testprocedure');
mssql_bind($stmt, 'RETVAL', $val, SQLINT4);
mssql_execute($stmt);
print $val;
И вот это у вас работает???? и даже что-то возвращает?????? Вот везет же людям!!!
Я пока не догадалась добавить пятый параметр в функцию mssql_bind, который называется is_output и равен 1, у меня никто ничего не возвращал, может есть какие то настройки (типа парметр по умолчанию???)
 

vovik

Новичок
Автор оригинала: ek-na
И вот это у вас работает???? и даже что-то возвращает?????? Вот везет же людям!!!
Прекрасно работает. Обращаю внимание, что речь идет о возврашении значения через RETURN, а не через OUTPUT параметры ХП.

Для OUTPUT параметров, действительно нужен еще один параметр для mssql_bind и значение по умолчанию тут не установишь. Когда процедура вызывается из T-SQL, при вызове тоже ведь нужно явно указать OUTPUT. Для понимания можно сказать, что при указании параметра is_output параметр в ХП передается по ссылке. Хотя на самом деле он НЕ передается по ссылке, но выглядит это очень похоже в большинстве случаев :)

Надеюсь никого не запутал своими излияниями :)
 

ek-na

Новичок
На самом деле проблема у меня была вот в чем: у меня хранимая процедура возвращала несколько параметров аутпут и еще запрос, так вот результат запроса возвращался всегда , а вот аутпут параметры только если нет запроса в процедуре, но вопрос решился, оказывается пока не сделаешь mssql_next_result($res) фиг свои параметры увидишь!
 
Сверху