mysql 代码段_php和mysql原生调用存储过程代码段

$sql = <<

DELIMITER $

DROP PROCEDURE IF EXISTS `ss`$

CREATE DEFINER=`root`@`localhost` PROCEDURE `ss`()

BEGIN

IF NOT

EXISTS (SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'new' AND TABLE_NAME = 'n_test' AND COLUMN_NAME = 'age' )

THEN

ALTER TABLE n_test ADD COLUMN age INT(2) DEFAULT 0 COMMENT '年龄';

END IF;

END$

DELIMITER ;

sql;

if(M()->execute($sql)==0){

echo "执行成功";

}

//---------------------------------------------------------------------------==================================================================================

//thinkphp貌似不能直接调用存储过程,要用原生的方法。

//代码如下:

$conn=mysql_connect('10.21.2.191:3306','dmz','1124') or die("Sorry,can not connect to database");

$res = mysql_query("set names utf8", $conn);

mysql_select_db('dmz_act_basic_2016', $conn);

$userInfo_proc = "call proc_get_userinfo_details(".$data['userid'].",''); ";

//传了个参数

$res = mysql_query($userInfo_proc);//执行存储过程

$res = mysql_fetch_assoc($res);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MySQL中有两种循环语句:WHILE和LOOP。 WHILE循环语句的基本语法如下: ``` WHILE condition DO statements; END WHILE; ``` 其中,`condition`为循环条件,一般是一个逻辑表达式,当满足该条件时,循环会一直执行。`statements`为循环体内的语句,可以是一条或多条SQL语句。 例如,下面的代码使用WHILE循环计算1到10的和: ``` DECLARE i INT DEFAULT 1; DECLARE sum INT DEFAULT 0; WHILE i <= 10 DO SET sum = sum + i; SET i = i + 1; END WHILE; SELECT sum; ``` 这里定义了两个变量`i`和`sum`,并使用WHILE循环计算1到10的和。每次循环中,将`i`加到`sum`中,然后将`i`加1。 LOOP循环语句的基本语法如下: ``` LOOP statements; IF condition THEN LEAVE; END IF; END LOOP; ``` 其中,`statements`为循环体内的语句,可以是一条或多条SQL语句。`condition`为循环条件,当满足该条件时,循环会终止。`LEAVE`语句用于退出循环。 例如,下面的代码使用LOOP循环计算1到10的和: ``` DECLARE i INT DEFAULT 1; DECLARE sum INT DEFAULT 0; LOOP SET sum = sum + i; SET i = i + 1; IF i > 10 THEN LEAVE; END IF; END LOOP; SELECT sum; ``` 这里同样定义了两个变量`i`和`sum`,并使用LOOP循环计算1到10的和。每次循环中,将`i`加到`sum`中,然后将`i`加1。当`i`大于10时,使用`LEAVE`语句退出循环。 需要注意的是,在MySQL中,循环语句只能在存储过程或函数中使用。如果要在SQL语句中使用循环,可以考虑使用游标来实现。 ### 回答2: MySQL中没有像其他编程语言一样的for循环结构。但是,我们可以使用游标和循环语句来达到类似的效果。 首先,我们需要创建一个游标来遍历数据库中的记录。可以使用DECLARE语句来定义游标,并使用SELECT语句初始化游标。例如: DECLARE cur CURSOR FOR SELECT column FROM table; 然后,我们可以使用循环语句来遍历游标中的记录。MySQL支持REPEAT、LOOP和WHILE等循环语句。在每次循环中,可以使用FETCH语句从游标中获取下一条记录,并使用条件判断语句来决定是否继续循环。例如: OPEN cur; REPEAT FETCH cur INTO variable; ... UNTIL condition END REPEAT; CLOSE cur; 在循环的每次迭代中,可以执行特定的操作,如对记录进行处理、更新数据等。 需要注意的是,使用游标和循环语句需要合理地管理数据库连接和资源,避免出现性能问题。同时,优先考虑使用原生的SQL语句来操作数据库,而不是使用循环。如果可能的话,可以通过编写高效的SQL查询语句来实现目标。 总而言之,MySQL没有内置的for循环结构,但可以通过游标和循环语句来模拟实现类似的功能。使用游标和循环时,需要注意性能问题,并优先考虑使用原生的SQL语句来操作数据。 ### 回答3: MySQL中并没有像其他编程语言中的for循环那样的语法。通常情况下,MySQL使用循环是通过使用存储过程或者触发器来实现的。 存储过程是一预先编译好的SQL代码块,可以在数据库中创建并且可以被重复调用执行。在存储过程中,可以使用循环结构来实现某些需要重复执行的逻辑。 例如,下面是一个使用存储过程实现的简单的循环逻辑: ``` DELIMITER // CREATE PROCEDURE myProcedure() BEGIN DECLARE i INT DEFAULT 0; WHILE i < 10 DO -- 在此处添加需要重复执行的SQL语句 -- 例如 INSERT INTO 表名 (列名) VALUES (值); SET i = i + 1; END WHILE; END // DELIMITER ; -- 调用存储过程 CALL myProcedure(); ``` 这代码创建了一个名为`myProcedure`的存储过程,使用一个`WHILE`循环来重复执行某SQL语句块(在注释的位置)。在循环过程中,我们可以通过设置变量`i`的值来控制循环的次数。 除了存储过程,触发器也可以用于实现某些需要在特定事件发生时重复执行的逻辑。触发器是与表相关联的特殊类型的存储过程,它们会在特定的表上执行,例如在插入、更新或删除数据之前或之后触发一些操作。 总结来说,MySQL并没有直接的for循环语法,但我们可以利用存储过程或者触发器来实现类似的循环逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值