使用php调用带有输出参数的存储过程,如果存储过程中包含insert语句,则输出参数就不能正确返回

guan_tu 2015-05-04 03:27:11
php代码如下:

$name = '1as5d4as564';
$count = 0;
//参数需要以如下数组方式赋值并标明类型,SQLSRV_PARAM_IN是输入类型,SQLSRV_PARAM_OUT是输出类型。注意要按照存储过程定义的顺序赋值
$params = array(
array(&$name, SQLSRV_PARAM_IN),
array(&$count, SQLSRV_PARAM_OUT)
);
$tsql_callSP = "{call prSearchcontentshow(?,?)}";
$stmt3 = sqlsrv_query($conn, $tsql_callSP, $params);
if( $stmt3 === false )
{
echo "Error in executing statement 3.\n";
die( print_r( sqlsrv_errors(), true));
}

print_r($params);

sqlserver存储过程

create procedure prSearchcontentshow(
@name varchar(50),
@counts int output
)
as
begin
//insert into Alarm values(@name); 如果加上这一句输出参数就不能正常返回
set @counts = 6666;
end

...全文
164 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2015-05-04
  • 打赏
  • 举报
回复
估计是不是字符串没加引号? PHP中换个纯数字试试
guan_tu 2015-05-04
  • 打赏
  • 举报
回复
如果在数据库中直接调用存储过程 , 输出参数的值也是能够正常返回的,但是通过前端php代码调用的时候,加上了 insert语句就不能正确返回了,真是奇了怪了
guan_tu 2015-05-04
  • 打赏
  • 举报
回复
引用 1 楼 ACMAIN_CHM 的回复:
insert into Alarm values(@name); ALARM 表结构是什么样?这个表中只有一个字段?
对的,我肯定这句话没有出错,这里只是为了说明问题,所以只用了一列
ACMAIN_CHM 2015-05-04
  • 打赏
  • 举报
回复
insert into Alarm values(@name); ALARM 表结构是什么样?这个表中只有一个字段?

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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