1、Mysql里没有数组类型,我怎么把一组数据作为参数传入到存储过程里呢?
如果把数组连接成字符串传入存储过程,那在存储过程内部怎么分割成数组呢?2、Mysql的存储过程里怎么判断有没有SQL语句执行错误,因为用到了事务,如果错误了,要在存储过程里回滚,并返回错误的值。3、php调用mysql的存储过程,只能靠先"set @x;"变量,然后传入存储过程,执行完,再"select @x;"这种方式来取得返回结果吗?能否取得select * from table这样的可以mysql_fetch_array的数据集?谢谢
如果把数组连接成字符串传入存储过程,那在存储过程内部怎么分割成数组呢?2、Mysql的存储过程里怎么判断有没有SQL语句执行错误,因为用到了事务,如果错误了,要在存储过程里回滚,并返回错误的值。3、php调用mysql的存储过程,只能靠先"set @x;"变量,然后传入存储过程,执行完,再"select @x;"这种方式来取得返回结果吗?能否取得select * from table这样的可以mysql_fetch_array的数据集?谢谢
用MYSQL的字符串处理函数了。 比如转入 1||2||2432||44
可以用 MID(), SUBSTR() 来逐字符来取,取到 || 则分解出一个参数。
也可以用SUBSTRING_INDEX() 来取。函数的说明和用法,详见MYSQL文档。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
没有判断错误的语句。一般是用
DECLARE handler_type HANDLER
FOR condition_value [, condition_value] ...
statement下面是MYSQL手册中的例子。
mysql> CREATE TABLE test.t (s1 INT, PRIMARY KEY (s1));
Query OK, 0 rows affected (0.00 sec)mysql> delimiter //mysql> CREATE PROCEDURE handlerdemo ()
-> BEGIN
-> DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
-> SET @x = 1;
-> INSERT INTO test.t VALUES (1);
-> SET @x = 2;
-> INSERT INTO test.t VALUES (1);
-> SET @x = 3;
-> END;
-> //
Query OK, 0 rows affected (0.00 sec)mysql> CALL handlerdemo()//
Query OK, 0 rows affected (0.00 sec)mysql> SELECT @x//
+------+
| @x |
+------+
| 3 |
+------+
1 row in set (0.00 sec)
你可以直接在存储过程中 select 返回这个结果集如下。 另外也可以用存储函数mysql> delimiter //
mysql>
mysql> CREATE PROCEDURE sp_GaoXX (param1 INT)
-> BEGIN
-> select param1;
-> END;
-> //
Query OK, 0 rows affected (0.61 sec)mysql>
mysql> CALL sp_GaoXX(66)//
+--------+
| param1 |
+--------+
| 66 |
+--------+
1 row in set (0.08 sec)Query OK, 0 rows affected (0.08 sec)mysql>
如果把数组连接成字符串传入存储过程,那在存储过程内部怎么分割成数组呢? MYSQL没有数组,可以用函数分拆字符串取得,OR在语言环境中用循环得到数组中的
数据,再传入SP中2、Mysql的存储过程里怎么判断有没有SQL语句执行错误,因为用到了事务,如果错误了,要在存储过程里回滚,并返回错误的值。
MYSQL没有判断SQL语句执行错误的语句 3、php调用mysql的存储过程,只能靠先 "set @x; "变量,然后传入存储过程,执行完,再 "select @x; "这种方式来取得返回结果吗?能否取得select * from table这样的可以mysql_fetch_array的数据集?你可以将结果存入到临时表中,再取
2、 MYSQL没有判断SQL语句执行错误的语句 ;
3、只能靠先 "set @x; "变量,然后传入存储过程,执行完,再 "select @x; "这种方式来取得返回结果吗?你将结果存入表中,不行吗?