RT

解决方案 »

  1.   

    方法一,在procedure中用OUT参数。mysql> delimiter //mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
        -> BEGIN
        ->   SELECT COUNT(*) INTO param1 FROM t;
        -> END;
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;mysql> CALL simpleproc(@a);
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT @a;
    +------+
    | @a   |
    +------+
    | 3    |
    +------+
    1 row in set (0.00 sec)
      

  2.   

    方法二,用FUNCTION
    mysql> CREATE FUNCTION hello (s CHAR(20)) RETURNS CHAR(50)
        -> RETURN CONCAT('Hello, ',s,'!');
    Query OK, 0 rows affected (0.00 sec)mysql> SELECT hello('world');
    +----------------+
    | hello('world') |
    +----------------+
    | Hello, world!  |
    +----------------+
    1 row in set (0.00 sec)
      

  3.   

    上面说的是在SQL中返回值,若你要在JAVA代码中返回我给你个模式,是我在用的,很科学。
    private static String PROC_EXEC_SQL="{CALL proc_name(?)}"
    Connection con = new Connection();
    CallableStatement cstm = con.PrepareCallable(PROC_EXEC_SQL);
    cstm.setString(1,"参数值")//这里是假设proc_name(?)存储过程里面的参数是CHAR()类型的,这里是对其预编译赋值。
    boolean bl = cstm.execute();//这是取得存储过程被执行后是否有返回结果集组成的结果集包,若有,则bl=true,否则bl=false;
    while(bl){
         rs =  cstm.getResultSet();//取得结果集包中的以个结果集
          System.out.println(rs.toString());
         bl = cstm.getMoreResultSet();看是否有其他结果集可以从这个结果集包中取得。若能,则bl = true,循环。否则,停止循环。
    }
    这是科学的调用存储过程并取得结果集的方式、
      

  4.   

    楼上的,php的要怎么写啊,我怎么都写不出来啊。