Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранимая процедура MS SQL 7.0, как получить выходные параметры 
:(
    Опции темы
recruit
Дата 17.11.2005, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Кто нибудь помогите, подскажите как получить выходные параметры этой хранимой процедуры
в 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





Это сообщение отредактировал(а) recruit - 17.11.2005, 16:22
PM MAIL   Вверх
PARROT
Дата 17.11.2005, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 3
Всего: 50



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


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Bikutoru
Дата 17.11.2005, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 2
Всего: 22



См. 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
там в форуме и примеров полно


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
recruit
Дата 17.11.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 5.11.2005

Репутация: нет
Всего: нет



Код

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


я так пробую у меня не получается
PM MAIL   Вверх
Taron
Дата 9.10.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 17.6.2006

Репутация: нет
Всего: нет



Код

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


100% работает
сам это использую при постраничном выводе
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0418 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.