一.创建存储过程
1.基本语法:
delimiter //
create procedure sp_name()
begin
………
end //
delimiter ; /*退出delimiter的声明代码段形式,缺少它,你每次都得“end //”才能结束代码 执行/*/
以下是mysql无参数存储过程截图
以下是mysql带参数存储过程截图
以下是mysql编辑存储过程截图
2.参数传递
二.调用存储过程
1.基本语法:call sp_name()
注意:存储过程名称后面必须加括号,哪怕该存储过程没有参数传递
三.删除存储过程
1.基本语法:
drop procedure sp_name
2.注意事项
(1)不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程
四.区块,条件,循环
1.区块定义,常用
begin
……
end;
也可以给区块起别名,如:
lable:begin
………..
end lable;
可以用leave lable;跳出区块,执行区块以后的代码
2.条件语句
if 条件 then
statement
else
statement
end if;
3.循环语句
(1).while循环
[label:] WHILE expression DO
statements
END WHILE [label] ;
(2).loop循环
[label:] LOOP
statements
END LOOP [label];
(3).repeat until循环
[label:] REPEAT
statements
UNTIL expression
END REPEAT [label] ;
五.其他常用命令
1.show procedure status
显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
2.show create procedure sp_name
显示某一个存储过程的详细信息
<?php
define('CLIENT_MULTI_RESULTS', 131072); //确定返回一个结果集
$link = mysql_connect("127.0.0.1", "root", "",1,CLIENT_MULTI_RESULTS) or die("Could not connect: ".mysql_error());
mysql_select_db("vs") or die("Could not select database");
?>
<?php
$result = mysql_query("call sp_user_insert('{$_POST['txtName']}','{$_POST['txtPwd']}')") or die("Query failed:" .mysql_error());
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$line = '<tr><td><a target = _blank href=\''.$row["url"].'\'>'.$row["title"].'('.$row["page_time"].')'.'</a></td></t
r>';
echo $line;
printf("\n");
}
mysql_free_result($result);
?>
<?php
mysql_close($link);
?>
编写时注意mysql语法与MSSQL的区别
摘要:
SQL Server
参数名字必须以'@'开头。
MySQL
参数名是常规标识符。
SQL Server
可以同时进行多个声明,如:"DECLARE v1 [data type], v2 [data type]"。
MySQL
只允许每次声明一个,如:"DECLARE v1 [data type]; DECLARE v2 [data type]"。
SQL Server
存储过程体中没有BEGIN ... END。
MySQL
必须有BEGIN ... END语句。
SQL Server
不需要以';'号结束语句。
MySQL
必须使用';'号作为语句结束标志,除了最后一条语句外。
SQL Server
可以进行"SET NOCOUNT"设置和"IF @@ROWCOUNT"判断,
MySQL
没有这些,但可以使用FOUND_ROWS()进行判断。
SQL Server
中使用"WHILE ... BEGIN"语句。
MySQL
使用"WHILE ... DO"语句。
SQL Server
允许使用"SELECT"进行指派。
MySQL
只允许SET进行指派。
SQL Server
允许在函数中访问表
MySQL
不允许函数中访问表