易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL 5.0存储过程

首先看MySQL 5.0参考手册中关于创建存储过程的语法说明:
 
CREATE
    [DEFINER = { user | CURRENT_USER }]
    PROCEDURE sp_name ([proc_parameter[,...]])
    [characteristic ...] routine_body
   
proc_parameter:
    [ IN | OUT | INOUT ] param_name type
type:
    Any valid MySQL data type
characteristic:
    LANGUAGE SQL
  | [NOT] DETERMINISTIC
  | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
  | SQL SECURITY { DEFINER | INVOKER }
  | COMMENT 'string'
routine_body:
    Valid SQL procedure statement
 
如果你对MySQL还不太熟悉的话,单单看这个语法结构当然不足以进行MySQL存储过程编程。我之前基本都是使用MS SQL SERVER,所以以下记录我熟悉MySQL存储过程的过程,也是重点介绍MS SQL SERVER与MySQL区别较大的地方。
 
第一步,当然是写个Hello Word的存储过程,如下:
CREATE PROCEDURE phelloword()
BEGIN
  SELECT 'Hello Word!' AS F;
END;
 
将上面创建phelloword存储过程的语句拷到phpMyAdmin中执行,报如下错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
 
在这个问题上我纠缠了很久,在MySQL的命令行工具中执行同样不成功,但是根据提示信息可以知道执行在 SELECT 'Hello Word!' AS F;处结束,后面的END;没有执行,这显然会导致错误。
这里需要选择以个分隔符,语法如下:DELIMITER //
分隔符是通知MySQL客户端已经输入完成的符号。一直都是用“;”,但是在存储过程中不行,因为存储过程中很多语句都需要用到分号。
因此上面的存储过程改为:
CREATE PROCEDURE ptest()
BEGIN
  SELECT 'Hello Word!' AS F;
END //
 
另外在phpMyAdmin中执行时,在Delimiter文本框中填写 //,这次存储过程即可创建成功。
 
第二步,写一个包括参数,变量,变量赋值,条件判断,UPDATE语句,SELECT返回结果集的完整的一个存储过程,如下:
CREATE PROCEDURE plogin
(
    p_username char(15),
 


相关文档:

四种在MySQL中修改root密码的方法

 <>整理了以下四种在MySQL中修改root密码的方法,可能对大家有所帮助!
方法1: 用SET PASSWORD命令
  mysql -u root
  mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
方法2:用mysqladmin
 
  mysqladmin -u root password "newpass"
  如果root已经设置 ......

PHP连接MySQL

<?php
/**
* Mysql DB
*
* @author Administrator
* @package defaultPackage
*/
class MySqlDB{
private $_db;
private static $_instance;
private function __construct(&$db_type){
global $connectionstr;
$conn_db=$connectionstr[$db_type];
$this->_db=mysql_pconnect($conn ......

mysql 中show 命令用法详细介绍

 以下所有命令都是在进入mysql监控器中执行的:
  a. show tables或show tables from database_name; // 显示当前数据库中所有表的名称
  b. show databases; // 显示mysql中所有数据库的名称
  c. show columns from table_name from database_name; 或show columns from databa ......

首用MYSQL索引的快感

用了MYSQL一年多,且一直被MYSQL的快速查询所吸引,可今天怎么碰石头了?
1Dp4V*W+t0
3p)o{3s.a'^Qr0
原来就是索引在做怪。由于本人是业余爱好自学PHP+MYSQL开发,所以在理论优化方面一般考虑甚少,基本不用字段索引去做MYSQL优化,可能也是我不会用吧。(总看书上说索引的好处好处的,今天着实尝到甜头了。)PHPChi ......

MySQL杂

MySQL的timestamp类型自动更新问题
 今天建了一个表,里面有一个列是timestamp类型,我本意是在数据更新时,这个字段的时间能自动更新。岂知对这个类型的值还不甚了解,导致出错。发现这个字段只是在这行数据建立的时候有值,在更新的却无变化。
    查找资料,发现是我建表的语句有问题:
以下是代 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号