mysql调试存储过程具体方法:
在你的存储过程中加入如下语句:
然后用mysql自带的cmd程序进入mysql 下.
call 你的存储过程名(输入参数1,@输出参数);(注:这里帮助下新同学,如果你的存储过程有输出变量,那么今天这一节只需要加 @ 然后跟任意变量名即可);
即可发现你的变量值被打印到了cmd下
php调用mysql存储过程和函数的方法
在php中调用存储过程和函数.
①调用存储过程的方法.
a.如果存储过程有 IN/INOUT参数,声明一个变量,输入参数给存储过程,该变量是一对,
一个php变量(也可以不必,只是没有php变量时,没有办法进行动态输入),一个Mysql
变量.
b.如果存储过程有OUT变量,声明一个Mysql变量.
mysql变量的声明比较特殊,必须让mysql服务器知道此变量的存在,其实也就是执行一条mysql语句.
入set @mysqlvar=$phpvar ;
c.使用mysql_query()/mysql_db_query()执行mysql 变量声明语句.
mysql_query("set @mysqlvar=$pbpvar");
这样,在mysql服务器里面就有一个变量,@mysqlar.如果是IN参数,那么其值可以由phpar传入.
d. 如果是存储过程.
①执行 call procedure()语句.
也就是mysql_query("call proceduer([var1]...)");
mysql_query("select @var)"
此时此刻呢的操作就和php执行一般的mysql语句一样了.可以通过mydql_fetch_row()等函数获得结果.
如果时函数. 直接执行 select function() 就可以了.
$host="localhost";
$user="root";
$db="samp_db";
$dblink=mysql_connect($host,$user,$password)
or die("can't connect to mysql");
mysql_select_db($db,$dblink)
or die("can't select samp_db");
$res=mysql_query("set @a=$password",$dblink);
$res=mysql_query("call aa(@a)",$dblink);
$res=mysql_query("select @a",$dblink);
$row=mysql_fetch_row($res);
echo $row[0];
方法一 进入命令行
mysql –u用户名 –p密码 –D数据库【sql脚本文件路径全名】,示例:
注意:
如果在sql脚本文件中使用了use 数据库,则-D数据库选项可以忽略
方法二 进入mysql的控制台后,使用source命令执行
Mysqlsource 【sql脚本文件的路径全名】 或 Mysql\. 【sql脚本文件的路径全名】,示例:
source /home/zj/create_table.sql
.?关于MySQL的存储过程
MySQL存储过程的创建
(1).?格式
MySQL存储过程创建的格式:CREATE PROCEDURE?过程名?([过程参数[,...]])
[特性?...]?过程体
这里先举个例子:
mysql?DELIMITER?//
mysql?CREATE?PROCEDURE?proc1(OUT?s?int)
-?BEGIN
-?SELECT?COUNT(*)?INTO?s?FROM?user;
-?END
-?//
mysql?DELIMITER?;
注:
(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原.
创建存储过程
CREATE PROCEDURE 存储过程名()
一个例子说明:一个返回产品平均价格的存储过程如下代码:
CREATE PROCEDURE productpricing()
BEGIN
SELECT Avg(prod_price) AS priceaverage
FROM products;
END;
//创建存储过程名为productpricing,如果存储过程需要接受参数,可以在()中列举出来.即使没有参数后面仍然要跟().BEGIN和END语句用来限定存储过程体,过程体本身是个简单的SELECT语句
给你个例子
drop procedure if exists call proc_temp;
delimiter $ //存储过程从$ 开始
create procedure proc_temp(
DECLARE dflag INT(11); //这里可以定义你需要的仅在存储过程里使用的变量
SET dflag = 0;//初始化
select * from table where time between startDate and endDate ;//你的sql语句,可以一句可以多句
END $//存储过程从$ 结束
delimiter ;
当上面的选中运行后没问题,可以选中下面的call xx 运行,上面的代码没有改动的话只需要运行一次
以上就是土嘎嘎小编为大家整理的mysql怎么用存储过程相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!