2013-04-24 2 views
-1

Попытка использовать этот код, который был обеспечен здесь, однако, она возвращает следующее сообщение об ошибке при попытке запустить:Oracle SQL Code

 
    PLS-00103: Encountered the symbol "IS" when expecting one of the following: 

    constant exception table long double ref char time timestamp interval 
    date binary national character nchar 

    1. DECLARE 
    2. emp employee%ROWTYPE; 
    3. tbl_emp IS TABLE OF emp; 
    4. v_user_type employee.user_type%TYPE; 
    5. BEGIN 

Кодекс:

DECLARE 
    emp employee%ROWTYPE; 
    tbl_emp IS TABLE OF emp; 
    v_user_type employee.user_type%TYPE; 
BEGIN 
    SELECT user_type 
    INTO v_user_type 
    FROM Employee 
    WHERE upper(username) = v('APP_USER'); 
    IF v_user_type = 1 
    THEN 
    SELECT * BULK COLLECT INTO tbl_emp 
    FROM employee; 
    ELSE 
    SELECT * BULK COLLECT INTO tbl_emp 
    FROM employee; 
    WHERE upper(username) = v('APP_USER'); 
    END IF; 
END; 
/
+3

дополнительная точка с запятой, четвёртая линия от конца. –

+0

Вам не хватает ключевое слово 'TYPE' в строке 2 и 3 и, конечно же, дополнительная точка с запятой. – Rachcha

ответ

1

Вам нужно сначала объявите тип, затем переменную этого типа.

Э.Г.

declare 
    type tbl_emp_type IS TABLE OF employee%ROWTYPE; 
    tbl_emp tbl_emp_type; 
begin 

    select * 
    bulk collect into tbl_emp 
    from employee; 

end; 

SQL Fiddle