1、Mysql里没有数组类型,我怎么把一组数据作为参数传入到存储过程里呢?
   如果把数组连接成字符串传入存储过程,那在存储过程内部怎么分割成数组呢?2、Mysql的存储过程里怎么判断有没有SQL语句执行错误,因为用到了事务,如果错误了,要在存储过程里回滚,并返回错误的值。3、php调用mysql的存储过程,只能靠先"set @x;"变量,然后传入存储过程,执行完,再"select @x;"这种方式来取得返回结果吗?能否取得select * from table这样的可以mysql_fetch_array的数据集?谢谢

解决方案 »


  1. 用MYSQL的字符串处理函数了。 比如转入  1||2||2432||44
    可以用 MID(), SUBSTR() 来逐字符来取,取到  || 则分解出一个参数。
    也可以用SUBSTRING_INDEX() 来取。函数的说明和用法,详见MYSQL文档。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      


  2. 没有判断错误的语句。一般是用

    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)
      


  3. 你可以直接在存储过程中 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>
      

  4. 1、Mysql里没有数组类型,我怎么把一组数据作为参数传入到存储过程里呢? 
          如果把数组连接成字符串传入存储过程,那在存储过程内部怎么分割成数组呢?  MYSQL没有数组,可以用函数分拆字符串取得,OR在语言环境中用循环得到数组中的
    数据,再传入SP中2、Mysql的存储过程里怎么判断有没有SQL语句执行错误,因为用到了事务,如果错误了,要在存储过程里回滚,并返回错误的值。 
      MYSQL没有判断SQL语句执行错误的语句 3、php调用mysql的存储过程,只能靠先 "set   @x; "变量,然后传入存储过程,执行完,再 "select   @x; "这种方式来取得返回结果吗?能否取得select   *   from   table这样的可以mysql_fetch_array的数据集?你可以将结果存入到临时表中,再取
      

  5. 1、MYSQL没有数组,最好在语言中将数组拆分成单一字符,将字符传入SP;
    2、 MYSQL没有判断SQL语句执行错误的语句 ;
    3、只能靠先 "set   @x; "变量,然后传入存储过程,执行完,再 "select   @x; "这种方式来取得返回结果吗?你将结果存入表中,不行吗?
      

类似问题 »