|
用ci很久了,ci调用mssql2008的存储过程一直不是那么顺畅,也懒得去读ci的手册,干脆自己写个函数搞掂mssql2008的存储过程,
函数如下,都有注释,给位看官请多多指教。
PHP复制代码
/*
执行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;
}
}
复制代码
|
|