重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
复制代码
为汝阳等地区用户提供了全套网页设计制作服务,及汝阳网站建设行业解决方案。主营业务为成都网站设计、成都做网站、汝阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
代码如下:
//比如要调用的存储过程为gxtj(a,b)
$db=new
mysqli("localhost","ssss","aaaaa","bbbb");
mysqli_query($db,"SET
NAMES
utf8");
$result=$db-query("call
gxtj($year,$jd)");
//
gxtj是mysql的存储过程名称
[color=gray][/color]
while(
$row
=
$result-fetch_array(MYSQLI_ASSOC))
//完成从返回结果集中取出一行
{
while
($key=key($row)){
//依次取得字段名
$value=current($row);
//依次取得字段值
}
}
实例一:无参的存储过程
复制代码
代码如下:
$conn
=
mysql_connect('localhost','root','root')
or
die
("数据连接错误!!!");
mysql_select_db('test',$conn);
$sql
=
"
create
procedure
myproce()
begin
INSERT
INTO
user
(id,
username,
sex)
VALUES
(NULL,
's',
'0');
end;
";
mysql_query($sql);//创建一个myproce的存储过程
$sql
=
"call
test.myproce();";
mysql_query($sql);//调用myproce的存储过程,则数据库中将增加一条新记录。
嘿嘿1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3.存储过程可以重复使用,可减少数据库开发人员的工作量4.安全性高,可设定只有某些用户才具有对指定存储过程的使用权有一点需要注意的是,一些网上盛传的所谓的存储过程要比sql语句执行更快的说法,实际上是个误解,并没有根据,包括微软内部的人也不认可这一点,所以不能作为正式的优点,希望大家能够认识到这一点。
mysql存储过程返回2个资源,第一个是执行信息,第二个是存储过程返回结果。
mysql_*系列函数无法获取超过1个资源,需使用mysqli或PDO代替。
PDO:
$stmt = $db-prepare("CALL pro_rb_save(?,?,@return_msg);");
$stmt-bindParam(1, $a);
$stmt-bindParam(2, $b);
$stmt-execute ();
$outputArray = $db-query("select @return_msg")-fetch(PDO::FETCH_ASSOC);
var_export($return_msg);
php相当于执行mysql的终端,即模拟mysql的客户端,所以符号sql标准的语句都是可以执行的。
存储是由数据库本身建立起来的,与php没有关系,
具体查看mysql的命令
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
方法:
1、打开 SQL Server Management Studio并连接到数据库引擎数据库。
2、在“对象资源管理器”窗格中展开“数据库”节点。
3、选中一个数据库,点开节点,找到“可编程性”—“存储过程”节点。
4、展开“存储过程”节点,可以找到新建的存储过程。
5、右击“存储过程”节点,在弹出的快捷菜单中选择“新建存储过程”命令,然后出现如图所示的Create procedure 语句的模板,修改名称,添加需要的SQL语句。
6、修改完成后,单击“执行”按钮即可创建一个存储过程。
直接上代码:
mysql_connect("localhost","user","pwd");
mysql_select_db('testdata') or die (mysql_error());
$sql = "create procedure tb_neaten (in rec int,in pa varchar(15),in qy decimal(10,2),in ar varchar(6))
begin
update test1 set qty=qty-qy where recordnum=rec;
insert into test2 set bname=pa,area=ar,qty=qy,date=date_format(now(),'%Y%m%d'),time=date_format(now(),'%Y%m%d');
end;";
mysql_query($sql) or die (mysql_error());
若是存储过程里含有捕获select结果的语句时,需在mysql_connect时调整参数
mysql_connect("localhost","user","password",1,131072)
执行时,直接运行
mysql_query(tb_neaten(va1,va2,va3,va4));