Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Хранимая процедура MS SQL 7.0


Автор: recruit 17.11.2005, 00:46
Кто нибудь помогите, подскажите как получить выходные параметры этой хранимой процедуры
в PHP, и вывести на страницу

Код

CREATE PROCEDURE xxx
as
declare @handle int,@rows int
exec sp_cursoropen @handle OUTPUT, 'select * from messages',1, 1, @rows OUTPUT
select @handle, @rows


При этом получаем пустой рекордсет, содержащий метаданные-описания колонок, которые можно использовать для получения названия полей (и типов). После NextRecordset также получаем хендл получившегося курсора и кол-во строк во всей выборке. Хендл нам понадобиться для подстановки в следующие вызовы, и его надо сохранить на клиенте в глобальную переменную, а кол-во строк может быть использовано для определения кол-ва страниц.

я пишу вот так

Код

<?php

include 'inc.php';
$link = mssql_connect($s,$u,$p);
if ($link) {
mssql_select_db($db, $link);

$stmt=mssql_init("xxx",$link);
mssql_bind($stmt,"@handle",$handle,SQLINT1,FALSE); 
mssql_bind($stmt,"@rows",$rows,SQLINT1,TRUE);
#mssql_bind($stmt,"@floatval",&$fval,SQLFLT8,TRUE);

$result=mssql_execute($stmt);
print (" intval = $handle ; string = $rows");
mssql_close($link);
}
else print("ooops!");
?>



а он почему то выводит 0,0

а потом выполнить этот курсор и тоже получить значение на странице
тут все понятно впринципе
синтаксис подскажите как его вызвать
Код


exec sp_cursorfetch @handle,16,@rowid,@rowcount




Автор: PARROT 17.11.2005, 10:23
recruit, пользуемся кнопкой КОД!
Отредактируйте пожалуйста свое сообщение.

Автор: Bikutoru 17.11.2005, 10:45
См. php.net

Цитата

Note:  If the stored procedure returns parameters or a return value these will be available after the call to mssql_execute() unless the stored procedure returns more than one result set. In that case use mssql_next_result() to shift through the results. When the last result has been processed the output parameters and return values will be available.


http://ru.php.net/manual/en/function.mssql-execute.php
Добавлено @ 10:46
там в форуме и примеров полно

Автор: recruit 17.11.2005, 16:16
Код

mssql_bind($my_procedure, "@OutputParameter", SQLVARCHAR, true);
$result = mssql_execute($my_procedure);
while(mssql_next_recordset($result)) {
## do something
}


я так пробую у меня не получается

Автор: Taron 9.10.2008, 18:21
Код

$rs = mssql_execute($sql, $link);
do {
    while ($row = mssql_fetch_row($rs)) {
    }
} while (mssql_next_result($rs));


100% работает
сам это использую при постраничном выводе

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)