mssql2008存储过程调用方法
用ci很久了,ci调用mssql2008的存储过程一直不是那么顺畅,也懒得去读ci的手册,干脆自己写个函数搞掂mssql2008的存储过程,函数如下,都有注释,给位看官请多多指教。
/*
执行mssql存储过程
$procedure 存储过程名字
$params存储过程参数,demo如下:
$userid = 2404;//传入的值,指定为SQLSRV_PARAM_IN,不能用引号
$result = 0;//输出的值,指定为SQLSRV_PARAM_OUT,不能用引号
$params = array(
array(&$userid, SQLSRV_PARAM_IN),
array(&$result, SQLSRV_PARAM_OUT)
);
$return=0表示需要output参数接收返回值
$return=1表示需要存储过程通过select返回查询信息
*/
function mssql_procedure($procedure, $params, $return=0){
$return = intval($return);
$procedure = trim($procedure);
if($procedure == ''){
return false;
}
$CI =& get_instance();
$connectionInfo = array("UID"=>$CI->db->username, "PWD"=>$CI->db->password, "Database"=>$CI->db->database);
$conn = sqlsrv_connect($CI->db->hostname, $connectionInfo);
if( $conn == false){
echo "连接失败!";
die( print_r( sqlsrv_errors(), true));
}
$sql = 'exec '.$procedure;
foreach($params as $v){
$sql .= ' ?,';
}
$sql = substr($sql, 0 ,-1);
$query= sqlsrv_query($conn,$sql, $params) or die(sqlsrv_errors());
if($return > 0){
$re = array();
while($row = sqlsrv_fetch_array($query,SQLSRV_FETCH_ASSOC)){
$re[] = $row;
}
return $re;
} else {
return $params;
}
}
发现存储过程里面有insert或者update语句就不行了。 Array to string conversion 提示这个是什么原因呢
页:
[1]