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;
私はブラケット等の学生、教授、学者のような異なる名前が含まれているタイプの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; ' –
私が実行していると私は次のエラーを取得する手順です: –
をフォーマットする必要があり、余分な情報、特にコードを追加する質問を編集してください「識別子の学生が宣言されなければなりません」。 –