이 코드가 있습니다.
SELECT의 열 개체가있는 INSERT SELECT
CREATE TABLE USERS(
USERNAME NVARCHAR2(30),
USER_TYPE VARCHAR2(13)
);
/
CREATE OR REPLACE TYPE OBJ_USER_TYPE IS OBJECT(
USER_TYPE VARCHAR2(13),
USER_LEVEL NUMBER(38, 0)
);
/
CREATE OR REPLACE TYPE OBJ_USER IS OBJECT(
USERNAME NVARCHAR2(30),
USER_TYPE OBJ_USER_TYPE
);
/
CREATE OR REPLACE TYPE NST_USERS IS TABLE OF OBJ_USER;
/
DECLARE
objUser OBJ_USER NOT NULL DEFAULT OBJ_USER('MARION', OBJ_USER_TYPE('USER', 3));
tblUSERS NST_USERS NOT NULL DEFAULT NST_USERS(objUser);
BEGIN
INSERT INTO USERS(USERNAME, USER_TYPE)
SELECT USERNAME, USER_TYPE.USER_TYPE
FROM TABLE(tblUSERS);
END;
/
은 그냥 here 같은 "잘못된 식별자"의 오류가 발생합니다. 내가 사용하는 경우
는하지만 :
INSERT INTO USERS(USERNAME, USER_TYPE)
SELECT USERNAME, TREAT(USER_TYPE AS OBJ_USER_TYPE).USER_TYPE
FROM TABLE(tblUSERS);
그것은 오류 "너무 많은 값"을 제기했다.
이 코드의 잘못된 점은 무엇입니까?
당신은 또한'NST_USERS'을 입력 우리에게'USERS' 테이블의 설명을 보여줄 수 있습니까? –
@MaheswaranRavisankar 내 편집장에서 내 USERS 정보를 보여 줬습니다. –
관련 없음 : 그러나 : PL/SQL 블록이 아닌 경우에는';'**와 ** the /'가 필요하지 않습니다 : http://stackoverflow.com/a/10207695/330315'create ... type .. ./ /'실제로 그 문장을 두 번 실행합니다 * –