对方提供的存储过程语句
DECLARE @return_value int,
@rtncode int,
@rtntext varchar(max)
EXEC @return_value = [dbo].[PD_API_GetUser]
@user_id = 1,
@rtncode = @rtncode OUTPUT,
@rtntext = @rtntext OUTPUT
SELECT @rtncode as N'@rtncode',
@rtntext as N'@rtntext'
下面是我封装的方法
public static function getConsumerInfo(){
$result = array();
$serverName = 'SD-20200000QYSI';//服务器名称
$connectionInfo = array(
'UID' => 'sa', //用户名
'PWD' => '123456', //密码
'Database' => 'test' //数据库名
);
$conn = sqlsrv_connect($serverName,$connectionInfo);
if($conn == false) {
$return = array(
'status' => 0,
'msg' =>'无法连接'
);
return $return;
}
//调用存储过程
$tsql_callSP = "
begin
declare @return_value int;
declare @rtncode int;
declare @rtntext varchar(max);
exec @return_value = dbo.PD_API_GetUser
@user_id = 1,
@rtncode = @rtncode OUTPUT,
@rtntext = @rtntext OUTPUT;
SELECT @rtncode as N'@rtncode',
@rtntext as N'@rtntext';
end
";
$statement = sqlsrv_query($conn,$tsql_callSP);
if($statement === false) {
$errors = sqlsrv_errors(SQLSRV_ERR_ALL);
if(!is_null($errors)) {
header("Content-type:text/html;charset=GBK"); //转gbk为了方便看错误信息调试
die( print_r( sqlsrv_errors(), true));
}
return false;
}
if($statement === false){
$result = array(
'status' => 0,
'msg' => '调用存储过程错误'
);
return $result;
}
while($row = sqlsrv_fetch_array($statement,SQLSRV_FETCH_ASSOC)){
$result = $row;
}
//关闭释放连接
sqlsrv_free_stmt($statement);
sqlsrv_close($conn);
return $result;
}
咋一看跟sqlserver的语法差不多,有个地方稍不注意就gg了
基本复制粘贴过去,改下配置就能直接用