ID가 주어진 첫 번째 이름을 가져 오기 위해 동적 SQL 프로 시저를 만들려고합니다.동적 SQL에서 테이블 이름을 입력으로 전달하는 방법은 무엇입니까?
CREATE OR REPLACE PROCEDURE SELECT_12
(
MIN_NBR NUMBER
, BORR_FST_NM VARCHAR2
, FIELD_NAME VARCHAR2
) IS
TYPE cur_type IS REF CURSOR;
C_1 CUR_TYPE;
QUERY_STR VARCHAR2(1000);
FIRST_NAME VARCHAR(1000);
BEGIN
QUERY_STR:= 'SELECT BORR_FST_NM from MON_DD_DDS.' || field_name ||'
WHERE MIN_NBR = :MINNBR';
OPEN C_1 FOR QUERY_STR USING MIN_NBR;
LOOP
FETCH C_1 INTO FIRST_NAME;
EXIT WHEN C_1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(FIRST_NAME);
END LOOP;
NULL;
END SELECT_12;
내가 브래킷 등 학생, 교수, 학자와 같은 5 월 다른 이름이 들어있는 타입 MON_DD_DMS.STAGE_MRE_()와 다른 데이터베이스가 나는 MON_DD_DMS.STAGE_MRE_STUDENT 같은 테이블의 이름을 정의하는 사용자 싶습니다 및 MON_DD_DMS.STAGE_MRE_PROFESSOR 등
내가 절차 실행하려고
:DECLARE
MIN_NBR NUMBER;
BORR_FST_NM VARCHAR2(200);
FIELD_NAME VARCHAR2(200);
BEGIN
FIELD_NAME := &FIELD_NAME;
MIN_NBR := &MIN_NBR;
BORR_FST_NM := NULL;
SELECT_12(MIN_NBR => MIN_NBR, BORR_FST_NM => BORR_FST_NM,
FIELD_NAME => FIELD_NAME);
END;
이 STAGE_MRE_student
선언되어야 함을 말한다합니다.
내가 잘못하고있는 것이 있습니까? 어떤 도움을 주시면 감사하겠습니다.
' MIN_NBR 번호를 선언; BORR_FST_NM VARCHAR2 (200); FIELD_NAME VARCHAR2 (200); BEGIN FIELD_NAME : = & FIELD_NAME; MIN_NBR : = & MIN_NBR; BORR_FST_NM : = NULL; SELECT_12 ( MIN_NBR => MIN_NBR, BORR_FST_NM => BORR_FST_NM, FIELD_NAME => FIELD_NAME ); END; ' –
그게 내가 실행중인 절차이고 다음과 같은 오류가 발생합니다 : "식별자 학생을 선언해야합니다" –
질문을 편집하여 서식을 지정해야하는 추가 정보, 특히 코드를 추가하십시오. –