【问题标题】:Multiple resultset of procedure. How return just the last resultset?过程的多个结果集。如何只返回最后一个结果集?
【发布时间】:2014-06-19 22:14:20
【问题描述】:

我的程序返回 2 个结果集; 如何只返回 LAST 结果集?

我想“禁用”第一个 SELECT。

按照下面的程序进行。

问候;

CREATE DEFINER=`root`@`%` PROCEDURE `PR_LOGIN`( IN USER BIGINT, IN PASS CHAR(50), IN X_STORE INT, IN X_POINT_SALE INT, IN DATETI DATETIME, IN IP_ACCESS VARCHAR(20) )
    BEGIN

    DECLARE  VAR_TOTAL INT;

    DECLARE EXIT HANDLER FOR SQLWARNING ROLLBACK;
    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;

    START TRANSACTION;

    SELECT
        A.*,
        @_USER_NAME:= B.USER_NAME,
        @_STORE_DESCR:= C.STORE_DESCR,
        @_POINT_SALE_DESCR:= D.POINT_SALE_DESCR
     FROM 
        TB_USER_STORE AS A
            INNER JOIN TB_USER AS B ON (A.ID_USER = B.ID_USER )
            INNER JOIN TB_STORE AS C ON (A.ID_STORE = C.ID_STORE)
            INNER JOIN TB_POINT_SALE AS D ON (A.ID_POINT_SALE = D.ID_POINT_SALE)
    WHERE B.ID_USER = USER AND B.PASSWORD = PASS AND A.FLG_ACTIVE = 1  AND B.FLG_ACTIVE = 1 AND A.ID_STORE = X_STORE AND A.ID_POINT_SALE = X_POINT_SALE;

     IF FOUND_ROWS() = 1 THEN
        INSERT INTO TB_LOG_ACCESS (ID_USER, ID_STORE, ID_POINT_SALE, DT_ENT, DT_EXI, IP_ACCESS) VALUES( USER , X_STORE, X_POINT_SALE,DATETI,NULL, IP_ACCESS);
        SELECT LAST_INSERT_ID() AS ID_LOG_ACCESS, USER AS USER_ID, @_USER_NAME AS USER_NAME, X_STORE AS ID_STORE, X_POINT_SALE AS POINT_SALE, @_STORE_DESCR AS STORE_DESCR, @_POINT_SALE_DESCR AS POINT_SALE_DESCR ;
     END IF;

    COMMIT;
END

【问题讨论】:

  • 你能用SELECT INTO variable吗?

标签: mysql resultset procedure


【解决方案1】:

如果您不希望返回选择的结果,那么您可以:

  • 使用“insert into t1(f1) select ...”将值放入表中
  • 使用 select field1 from table1 limit 1 into localVariable1 将值放入局部变量;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多