Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54820
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 162
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-19 20:14
文章分类
文章存档

2013年(9)

我的朋友

分类: Mysql/postgreSQL

2013-07-19 21:58:53


SQL编程
变量
局部变量    declare
全局变量    @a
set  @a = 10;    直接赋值
set @a := 'zhoudian';
select @c := 'abc';    打印并赋值

select @@version;
@@开头是MySQL已经定义好的一些变量。

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter // -- 修改语句界定符,这样就允许在程序体中使用;
  3. create procedure sp1()
  4. begin
  5.     -- 在declare之前不能有非declare语句
  6.     declare a int; -- declare声明局部变量
  7.     declare b, c , d float default 3.3;
  8.     set a = 10; -- 没有赋值时默认为null
  9.     set b =1.23, c=8.9;
  10.     select a, b, c, @b;
  11. end//
  12. delimiter ;


----------------------------------------------
show procedure status\G;
show procedure status like 'sp1' \G;
---------------------------------------------

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1()
  4. begin
  5.     declare a int;
  6.     declare b dec(5,2) default 10;
  7.     declare c varchar(32) charset utf8;
  8.     set a = 10;
  9.     set b = 314.12;
  10.     set c = '中国';
  11.     select a, b, c;
  12. end //
  13. delimiter ;


-----------------------------------------------
存储过程(数据库中的),执行速度快
MySQL中的存储过程没有返回值,但是可以通过out参数将值传出

点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1(a date , b varchar(20))
  4. begin
  5.     select a, b;
  6. end //
  7. delimiter ;



点击(此处)折叠或打开

  1. drop procedure if exists sp1;
  2. delimiter //
  3. create procedure sp1(sid int, sname varchar(32))
  4. begin
  5.     create table if not exists stu
  6.     (
  7.     stuID int,
  8.     stuName varchar(32)
  9.     )engine=innodb charset=utf8;
  10.     insert into stu values(sid,sname);
  11. end //
  12. delimiter ;


点击(此处)折叠或打开

  1. -- 使用out传出值,,,,,inout传入传出
  2. drop procedure if exists sp1;
  3. delimiter //
  4. create procedure sp1(out c int)
  5. begin
  6.     select count(1) into c from stu;
  7. end //
  8. delimiter ;

  9. call sp1(@c);


-----------------------------------------------------------------
select *  from stu;
select found_rows();    -- 上一条语句一共查出了多少条记录
---------------------------------------------------------------------------------
使用php连接数据库

点击(此处)折叠或打开

  1. create table dept
  2. (
  3.     deptID int,
  4.     deptName varchar(32)
  5. )engine=innodb charset=utf8;

  6. drop procedure if exists sp1;
  7. delimiter //
  8. create procedure sp1(a int, b varchar(32))
  9. begin
  10.     insert into dept values(a, b);
  11. end //
  12. delimiter ;



html页面

点击(此处)折叠或打开

  1. <html>
  2. <body>
  3. <form name="frm" action="my.php" method="post">
  4.     deptID:<input type="text" name="deptID" /><br />
  5.     deptName:<input type="text" name="deptName" /><br />
  6.     <input type="submit" value="submit">
  7. </form>
  8. </body>
  9. </html>



php页面

点击(此处)折叠或打开

  1. <?php
  2.     $deptID = $_POST['deptID'];
  3.     $deptName = $_POST['deptName'];
  4.     
  5.     mysql_connect('localhost:/var/run/mysqld/mysql57.sock','root','');
  6.     mysql_select_db('ds');
  7.     
  8.     mysql_query('set names utf8');
  9.     
  10.     #$sql = "insert into dept values($deptID,'$deptName')";
  11.     #mysql_query($sql);
  12.     mysql_query("call sp1($deptID,'$deptName')");
  13. ?>



阅读(2476) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

zdian_linux2013-07-22 15:45:18

鱼门客栈:..  学习了

谢谢

回复 | 举报

鱼门客栈2013-07-22 09:19:14

..  学习了