php调用mssql的存储过程无法同时返回输出参数和结果集??请教!!!

cshgood1 2003-08-22 11:59:09
php调用mssql的存储过程无法同时返回输出参数和结果集??请教!!!

我的存储过程如:

create procedure feeAccording
( @total int output, ----总数
@tableName varchar(20) --表名

)

set @sql = 'select count(*) from ' + @tableName ;

set @sql = 'declare mycursor cursor for ' + @sql;
exec (@sql);

open mycursor;
fetch next from mycursor into @total;
close mycursor;
deallocate mycursor;

--获取当前页记录

set @sql = 'select * from ' + @tableName + 'where id > 50';
exec (@sql);
GO


我的php 代码如下:

$handle = mssql_init("feeAccording");
$tablName="mytable";
mssql_bind($handle,"@total",&$total,SQLINT4,TRUE);
mssql_bind($handle,"@lastPos",&$tablName,SQLVARCHAR);
if($r = mssql_execute($handle))
{
$num = mssql_num_rows($r);
for ($i = 0; $i < $num; $i++)
{
$result[$i]=mssql_fetch_assoc($r);
//echo $result[$i]["id"]."---<br>";
}
mssql_free_result($r);
}
这样我能得到结果集,但$total值确无法得到

如果我把存储过程中的最后一句(exec (@sql);)注释掉
其它不该任何代码,就能获得$total值

请问这是什么源英???
能解决码?

...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cshgood1 2003-09-23
  • 打赏
  • 举报
回复
to bflovesnow(北风) :
我正是用返回多个结果集的方法解决了问题,
只是我想真如我上面所说的:
同事返回结果集和输出参数应该是可行的

所以让大家来讨论讨论,
:)

可是这么旧也没人给出有效的方法:((((
bflovesnow 2003-09-18
  • 打赏
  • 举报
回复
1.我不用mssql_bind等函数来执行MSSQL的SP
还是用普通的方法,即mssql_query("exec sp_name @a,@b");

2.output用起来比较麻烦,我是一般返回结果集的,即 select @output 名字。
所以你的@total就不需要了,直接在SP内declare就行了

3.如有返回的参数和结果集,可以把输出参数也作为结果集,即返回两个结果集

然后用 这样的方法来取(手册中的例子):
$link = mssql_connect ("localhost", "userid", "secret");
mssql_select_db("MyDB", $link);
$SQL = "exec sp_name @a,@b";
$rs = mssql_query($SQL, $link);
do {
while ($row = mssql_fetch_row($rs)) {
}
} while (mssql_next_result($rs));
bflovesnow 2003-09-18
  • 打赏
  • 举报
回复
1.我不用mssql_bind等函数来执行MSSQL的SP
还是用普通的方法,即mssql_query("exec sp_name @a,@b");

2.output用起来比较麻烦,我是一般返回结果集的,即 select @output 名字。
所以你的@total就不需要了,直接在SP内declare就行了

3.如有返回的参数和结果集,可以把输出参数也作为结果集,即返回两个结果集

然后用 这样的方法来取(手册中的例子):
$link = mssql_connect ("localhost", "userid", "secret");
mssql_select_db("MyDB", $link);
$SQL = "exec sp_name @a,@b";
$rs = mssql_query($SQL, $link);
do {
while ($row = mssql_fetch_row($rs)) {
}
} while (mssql_next_result($rs));
cshgood1 2003-09-10
  • 打赏
  • 举报
回复
怎么没有人回答呀
我的问题解决了
但是不是通过同事返回结果集和输出参数解决的
而是返回多个结果机

但同事返回结果集和输出参数应该是可行的

我的贴资暂时不结
大家来讨论讨论把
有结果了我给分
:)
nielisheng 2003-08-22
  • 打赏
  • 举报
回复
up

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧