2011-05-04 2 views
1

이것은 정말 유용한 SQL 조각입니다.하지만 기본적으로 큰 일을 처리 한 데이터 입력 원숭이 중 하나이며 사본이 우리 시스템에 깊이 들어갔습니다. .열 이름에 대한 하위 쿼리를 사용하여 SQL 업데이트 수행

다른 값이 VAL3 인 경우 값이 VAL1에서 VAL2로 변경되어야하는 테이블이 상당히 많습니다. 문제는이 경우에 모든 테이블을 알 수 없으며 모든 테이블에 고유 한 열 이름이 있음을 의미하는 엄격한 열 명명 정책이 있다는 것입니다.

나는이 업데이트를 수행하려고 시도하는 다음과 같은 SQL을 썼다, 그러나 그것은 작동하지 않습니다

UPDATE 
(SELECT DISTINCT TABLE_NAME AS tbTableName 
    FROM ALL_TAB_COLUMNS 
    WHERE COLUMN_NAME LIKE '%MAJR%') 
SET 
(SELECT COLUMN_NAME AS tbColumnName 
    FROM tbTableName 
    WHERE COLUMN_NAME LIKE '%MAJR%') = 'VAL2' 
WHERE 
(SELECT COLUMN_NAME AS tbColumnNameWhere 
    FROM tbTableName 
    WHERE COLUMN_NAME LIKE '%PROGRAM%') = 'VAL3' 
AND tbColumnName = 'VAL1'; 

을하지만 그래,이 오류와 함께 전복 :에는 table.column을 무효 user.table.column 또는 열 지정 01747. 00000 - "유효하지 않은 user.table.column, table.column 또는 열 지정"

아무 도움이됩니다.

+1

동적 SQL을 사용해야 할 것입니다 – TrevDev

답변

1

불행히도 이런 하위 쿼리를 수행 할 수 없습니다. 최선의 방법은 PHP 나 기본 스크립팅 언어가 무엇이든간에 사용하고 데이터베이스를 쿼리하여 모든 SQL 문을 작성하는 것입니다.

+0

저에게 감사드립니다. - SQR을 사용하고 있으므로 너무 나쁜 것은 아닙니다. –

관련 문제