長すぎる私がプロシージャを実行するたびに、それは選択のタイプに従ってカーソルで結果が得られます:ORA-00972:識別子が、私はこのような手順を持っているORA-06512
create or replace PROCEDURE EMAT_PROC_DROPDOWN_SELECTALL(SELECT_TYPE IN VARCHAR2, RESULT_SET OUT SYS_REFCURSOR)
AS
SELECT_TYPE_IN VARCHAR2(100);
TABLE_NAME VARCHAR2(100);
FIELD_NAME VARCHAR2(100);
C_ZONE SYS_REFCURSOR;
C_USER_ID SYS_REFCURSOR;
BEGIN
SELECT_TYPE_IN:=SELECT_TYPE;
IF(SELECT_TYPE_IN ='ZONE') THEN
BEGIN
TABLE_NAME:='MM_ZONEMASTER';
FIELD_NAME:='ZONE_NAME';
OPEN C_ZONE FOR
'SELECT DISTINCT' ||FIELD_NAME|| 'FROM' ||TABLE_NAME||';';
LOOP
FETCH C_ZONE INTO RESULT_SET;
EXIT WHEN C_ZONE%NOTFOUND;
END LOOP;
CLOSE C_ZONE;
END;
ELSIF(SELECT_TYPE_IN ='USER') THEN
BEGIN
TABLE_NAME:='AD_USERMASTER';
FIELD_NAME:='USER_ID';
OPEN C_USER_ID FOR
'SELECT DISTINCT' ||FIELD_NAME|| 'FROM' ||TABLE_NAME||';';
LOOP
FETCH C_USER_ID INTO RESULT_SET;
EXIT WHEN C_USER_ID%NOTFOUND;
END LOOP;
CLOSE C_ZONE;
END;
END IF;
END;
が、エラーを返す** * ORA-00972:識別子が長すぎ ORA-06512である: "EMAT.EMAT_PROC_DROPDOWN_SELECTALL"、ライン14 ORA-06512で:ライン7
@JeromeFrあなたの解決策は正しいですが、私がBEGINを実行するとき TABLE_NAME:= 'MM_ZONEMASTER'; FIELD_NAME:= 'ZONE_NAME'; OPEN C_ZONE FOR 'SELECT DISTINCT' || FIELD_NAME || 'FROM' || TABLE_NAME || ';'; ORA-00911:無効な文字です –