CREATE OR REPLACE PROCEDURE ASPNET_GETUSERBYEMAIL
(
    APPLICATIONNAME IN  NVARCHAR2,
    EMAIL           IN NVARCHAR2,
    V_OUNNT         OUT NUMBER
)
AS
BEGIN
    IF EMAIL IS NULL THEN
       BEGIN
             SELECT COUNT(*) INTO V_COUNT
             FROM ASPNET_APPLICATIONS A,
             ASPNET_USERS        U,
             ASPNET_MEMBERSHIP   M
             WHERE LOWER(APPLICATIONNAME) = A.LOWEREDAPPLICATIONNAME
             AND U.APPLICATIONID = A.APPLICATIONID
             AND U.USERID = M.USERID
             AND M.LOWEREDEMAIL IS NULL;
        END;
    ELSE
        BEGIN
         SELECT COUNT(*) INTO V_COUNT
       FROM ASPNET_APPLICATIONS A,
           ASPNET_USERS        U,
           ASPNET_MEMBERSHIP   M
       WHERE LOWER(APPLICATIONNAME) = A.LOWEREDAPPLICATIONNAME
       AND U.APPLICATIONID = A.APPLICATIONID
       AND U.USERID = M.USERID
       AND LOWER(EMAIL) = M.LOWEREDEMAIL;
        END;
    END IF ;
    IF V_COUNT = 0 THEN
       BEGIN
       V_OUNNT:= 1;
       END;
    ELSE
       BEGIN
       V_OUNNT:=0;
       END;
    END IF;
END ASPNET_GETUSERBYEMAIL;

解决方案 »

  1.   

    --如果返回一个值,请使用函数,不需要每个语句用BEGIN..END
    --自己对照比较一下
    CREATE OR REPLACE FUNCTION ASPNET_GETUSERBYEMAIL(APPLICATIONNAME IN NVARCHAR2,
                                                     EMAIL           IN NVARCHAR2)
      RETURN NUMBER AS
      V_OUNNT NUMBER;
    BEGIN
      IF EMAIL IS NULL THEN
        SELECT COUNT(*)
          INTO V_COUNT
          FROM ASPNET_APPLICATIONS A, ASPNET_USERS U, ASPNET_MEMBERSHIP M
         WHERE LOWER(APPLICATIONNAME) = A.LOWEREDAPPLICATIONNAME
           AND U.APPLICATIONID = A.APPLICATIONID
           AND U.USERID = M.USERID
           AND M.LOWEREDEMAIL IS NULL;
      ELSE
        SELECT COUNT(*)
          INTO V_COUNT
          FROM ASPNET_APPLICATIONS A, ASPNET_USERS U, ASPNET_MEMBERSHIP M
         WHERE LOWER(APPLICATIONNAME) = A.LOWEREDAPPLICATIONNAME
           AND U.APPLICATIONID = A.APPLICATIONID
           AND U.USERID = M.USERID
           AND LOWER(EMAIL) = M.LOWEREDEMAIL;
      END IF;
      IF (V_COUNT = 0) THEN
        RETURN(1);
      ELSE
        RETURN(0);
      END IF;
    END ASPNET_GETUSERBYEMAIL;