编译不通过,希望大家指导PROCEDURE PRO_USER_GETINFOE(RST OUT INFOE,U_TYPENAME VARCHAR2)
    IS 
    TYPEID NUMBER;
    BEGIN
      SELEC C_TYPE INTO TYPEID FROM T_USER WHERE C_TYPENAME=U_TYPENAME;
      if TYPEID=1        THEN
        BEGIN
             OPEN RST FOR SELECT * FROM T_USER_1;
        END;
        END IF;
      if TYPEID=2
        THEN
        BEGIN
             OPEN RST FOR SELECT * FROM T_USER_2;
        END;
        END IF;  
      if TYPEID=3
        THEN
        BEGIN
             OPEN RST FOR SELECT * FROM T_USER_3;
        END;
        END IF;  
      if TYPEID=4
        THEN
        BEGIN
             OPEN RST FOR SELECT * FROM T_USER_4;
        END;
        END IF; 
      if TYPEID=5
        THEN
        BEGIN
             OPEN RST FOR SELECT * FROM T_USER_5;
        END;
        END IF;     
    END PRO_USER_GETINFOE; 

解决方案 »

  1.   

    RST OUT INFOE  你确定是动态游标???你也不把错误提示发出来,
      

  2.   


    CREATE OR REPLACE PROCEDURE PRO_USER_GETINFOE(RST OUT INFOE,U_TYPENAME IN VARCHAR2)
    IS  
      TYPEID NUMBER;
    BEGIN
      SELEC C_TYPE INTO TYPEID FROM T_USER WHERE C_TYPENAME=U_TYPENAME;
      IF TYPEID=1 THEN
         OPEN RST FOR SELECT * FROM T_USER_1;
      ELSEIF TYPEID=2 THEN
             OPEN RST FOR SELECT * FROM T_USER_2;  
      ELSEIF TYPEID=3 THEN
             OPEN RST FOR SELECT * FROM T_USER_3;  
      ESLEIF TYPEID=4 THEN
             OPEN RST FOR SELECT * FROM T_USER_4; 
      ELSE
           OPEN RST FOR SELECT * FROM T_USER_5;
      END IF;   
    END PRO_USER_GETINFOE; 
      

  3.   

    oracle的if语句不需要 begin end
    3楼的差不多 
    不过oracle的elseif 要写出elsif
      

  4.   


    CREATE OR REPLACE PROCEDURE PRO_USER_GETINFOE(
           RST OUT INFOE,
           U_TYPENAME IN VARCHAR2)
    IS  
      TYPEID NUMBER;
    BEGIN
      SELECT C_TYPE INTO TYPEID 
      FROM T_USER 
      WHERE C_TYPENAME=U_TYPENAME;
      IF TYPEID=1 THEN
         OPEN RST FOR SELECT * FROM T_USER_1;
      ELSEIF TYPEID=2 THEN
             OPEN RST FOR SELECT * FROM T_USER_2;  
      ELSEIF TYPEID=3 THEN
             OPEN RST FOR SELECT * FROM T_USER_3;  
      ESLEIF TYPEID=4 THEN
             OPEN RST FOR SELECT * FROM T_USER_4; 
      ELSE
           OPEN RST FOR SELECT * FROM T_USER_5;
      END IF;   
    END PRO_USER_GETINFOE;
      

  5.   


    PROCEDURE PRO_USER_GETINFOE(RST OUT INFOE, U_TYPENAME VARCHAR2) IS
      TYPEID NUMBER;
    BEGIN
      SELEC C_TYPE --这里selec写错了,应该是select 
        INTO TYPEID FROM T_USER WHERE C_TYPENAME = U_TYPENAME;
      if TYPEID = 1
      
       THEN
        BEGIN
          OPEN RST FOR
            SELECT * FROM T_USER_1;
        END;
      END IF;
      if TYPEID = 2 THEN
        BEGIN
          OPEN RST FOR
            SELECT * FROM T_USER_2;
        END;
      END IF;
      if TYPEID = 3 THEN
        BEGIN
          OPEN RST FOR
            SELECT * FROM T_USER_3;
        END;
      END IF;
      if TYPEID = 4 THEN
        BEGIN
          OPEN RST FOR
            SELECT * FROM T_USER_4;
        END;
      END IF;
      if TYPEID = 5 THEN
        BEGIN
          OPEN RST FOR
            SELECT * FROM T_USER_5;
        END;
      END IF;
    END PRO_USER_GETINFOE;还不行的话,把错误信息贴出来,这是问问题的最基本要求