MySQL存储过程编程,mysql存储函数和存储过程
写一个Mysql存储过程
CREATE PROCEDURE `xxxx`( )
BEGIN
#设置事务
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1;
#开启事务
START TRANSACTION;
#插入数据
INSERT INTO 表2(字段21,字段22,字段23)
SELECT 字段11,字段12,字段13 FROM 表1 where xxxx ;
#删除数据
delete 表1 where xxx;
#以上两步操作出现任何失误都将回滚
IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
end;
mysql 存储过程怎么调用?
php调用mysql存储过程和函数的方法
存储过程和函数是MySql5.0刚刚引入的。关于这方面的操作在PHP里面没有直接的支持。但是由于Mysql PHP API的设计,使得我们可以在以前的PHP版本中的mysql php api中支持存储过程和函数的调用。
在php中调用存储过程和函数。
1。调用存储过程的方法。
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。 如果是存储过程。
1。执行 call procedure()语句。
也就是mysql_query("call proceduer([var1]...)");
2. 如果有返回值,执行select @ar,返回执行结果。
mysql_query("select @var)"
接下来的操作就和php执行一般的mysql语句一样了。可以通过mydql_fetch_row()等函数获得结果。
如果时函数。 直接执行 select function() 就可以了。
$host="localhost";
$user="root";
$password="11212";
$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中的存储过程怎么使用
存储过程(Stored
Procedure)是一组为了完成特定功能的SQL语句集功能是将常用或复杂的工作,预先用SQL语句写好并用一个指定名称存储起来,
以后需要数据库提供与已定义好的存储过程的功能相同的服务时,只需调用
call
存储过程名字,
即可自动完成命令。存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,可由应用程序通过一个调用来执行,而且允许用户声明变量
。同时,存储过程可以接收和输出参数、返回执行存储过程的状态值,也可以嵌套调用。
mysql存储过程
start是mysql的关键词,不能直接用于过程中的参数,需要加一对··符号,修正后的存储过程如下:
CREATE?PROCEDURE?sp_pagination(currentpage?INT,?numperpage?INT)
??BEGIN
????DECLARE?`START`?INT;
????SET?`START`?=?(currentpage?-?1)?*?numperpage?-?1;
????SELECT?*?FROM???employees?LIMIT?`START`,?numperpage;
END
mysql写一个存储过程
这个SQL存储过程改写成MYSQL如下:
CREATE PROCEDURE proc_login
(IN v_name VARCHAR(16),
IN v_psd VARCHAR(8),
OUT v_out INT)
BEGIN
DECLARE v_pass VARCHAR(8);
DECLARE v_num INT;
SELECT COUNT(*) INTO v_num FROM USER WHERE name=v_name;
IF v_num=0
SELECT pass INTO v_pass FROM user WHERE name=v_name;
IF v_pass=v_psd
SET v_out=9;
ELSE
SET v_out=1;
END IF;
ELSE
SET v_out=1;
END IF;
END;
希望能帮到你。