생성 된 생성 된 열 이름에 대한 쿼리를 실행해야합니다.Oracle :이 쿼리를 실행하는 방법 (생성 된 열 이름)
이select 'col_'||4 from MY_TABLE
참고 :
- "4"자바 코드
- MY_TABLE 내에서이 쿼리에 전달되는 변수가 열을 포함하는 테이블입니다 여기에 는 쿼리의 이름 (col_4, col_5 등)
생성 된 생성 된 열 이름에 대한 쿼리를 실행해야합니다.Oracle :이 쿼리를 실행하는 방법 (생성 된 열 이름)
이select 'col_'||4 from MY_TABLE
참고 :
오라클 내부에는 동적 SQL을 사용해야합니다. 단일 행 선택을 위해
: 당신이 어떤 SQL을 구축하고 동적 SELECT 문을 실행하려면 그들에게
나는 그런 질문을하는 것이 매우 바보 같다고 생각한다. :) 나는 당신의 권고를 시험하고 답을 받아 들일 것이다. –
이 문장은 실행된다. 그러나 선택한 데이터에 액세스 할 수 없습니다. – Codo
을 실행할 수있는 자바에서
이EXECUTE IMMEDIATE ' select col_' || YourVariable || ' from MY_TABLE ';
, 당신은 두 가지 선택이 (YourVariable 값은 예를 들어 4) 당신이 ... INTO EXECUTE IMMEDIATE를 사용 : 여러 행을 선택
EXECUTE IMMEDIATE 'select col_' || l_num || ' from MY_TABLE WHERE id = 37' INTO l_result;
, 당신은 동적 커서를 사용할 수 있습니다
,DECLARE
TYPE MyCurType IS REF CURSOR;
my_cv MyCurType;
BEGIN
OPEN emp_cv FOR 'select col_' || l_num || ' from MY_TABLE';
...
END;
이 코드는 자신의 열 이름과 테이블을 반환하는 SELECT를 생성
SELECT
'SELECT ' ||(
SELECT
LISTAGG(
c.TABLE_NAME || '.' || c.COLUMN_NAME || ' AS "' || c.TABLE_NAME || '.' || c.COLUMN_NAME || '"',
', '
) WITHIN GROUP(
ORDER BY
c.TABLE_NAME
) "TABLE_NAMES"
FROM
USER_TAB_COLS c
WHERE
TABLE_NAME IN(
'PESSOA',
'PESSOA_FISICA',
'PESSOA_JURIDICA'
)
)|| 'FROM PERSON;'
FROM
DUAL;
수를 증가하는 것은 당신이 실제로 실제로 DB 설계 –
를 다시 생각하고 싶지 같은 소리 포함 된 열 이름과 테이블 그것은 이미 존재하는 테이블입니다. DB가 업데이트되면 어디서나 DBA가이를 다시 생성한다고 생각합니다. –