당신이하고있는 일은 상수로 주문하는 것입니다. AskTom 다음 : - | < 서수 위치에 따라 단지 VALUE
순서>
가 동적으로 열 위치를 반환 할 수 없습니다, 당신은 동적으로 상수 숫자, 상수 값을 반환 < 표현식>
수식이 아닌 표현식이 반환됩니다.
DECODE
함수를 사용하여 열 위치를 실제 열로 디코딩 할 수 있습니다. 내 코드 샘플을 확인하십시오 :
CREATE OR REPLACE TYPE my_type FORCE AS OBJECT
(
col_1 NUMBER
,col_2 NUMBER
);
/
CREATE OR REPLACE TYPE my_nested_table AS TABLE of my_type;
/
DECLARE
l_table_a my_nested_table := my_nested_table();
l_table_b my_nested_table := my_nested_table();
l_sort_column NUMBER := 2;
BEGIN
l_table_a.extend(100);
FOR l_i IN 1..l_table_a.COUNT LOOP
l_table_a(l_i) := my_type(ROUND(DBMS_RANDOM.RANDOM,0), ROUND(DBMS_RANDOM.RANDOM,0));
END LOOP;
SELECT CAST(
MULTISET(
SELECT *
FROM TABLE(l_table_a)
ORDER BY DECODE(l_sort_column, 1, col_1
, 2, col_2) DESC
) AS my_nested_table
)
INTO l_table_b
FROM dual;
DBMS_OUTPUT.PUT_LINE('col_1 col_2');
FOR l_i IN 1..l_table_b.COUNT LOOP
DBMS_OUTPUT.PUT_LINE(l_table_b(l_i).col_1 || ' ' || l_table_b(l_i).col_2);
END LOOP;
END;
/
이것은 여전히 내 시나리오에서 작동하지 않습니다. 저는 성명서에서 파생되지 않은 값을 도입하려고 시도하고 있기 때문에 이것이 동적 성명이 될 수 있고 그것을 사용하려고 시도했지만 여전히 문제가 있다는 것을 깨달았습니다 – programmerNOOB
그래서 당신의 시나리오는 무엇입니까? 왜냐하면 그것은 당신이 요구 한 것과 정확히 일치하기 때문입니다. – kpater87