一.创建存储过程

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
不允许函数中访问表
 

posted on 2007-06-27 17:50  林宁  阅读(968)  评论(0编辑  收藏  举报