programing

Oracle은 SQL Server의 테이블 변수와 동등합니까?

fastcode 2023. 4. 5. 22:18
반응형

Oracle은 SQL Server의 테이블 변수와 동등합니까?

SQL Server에서는 테이블 변수를 선언할 수 있습니다(DECLARE @table TABLE스크립트 실행 중에 생성되어 메모리에서 삭제됩니다.

Oracle에도 비슷한 기능이 있나요?아니면, 내가 어떻게 해야 하는지CREATE/DROP내 하드 드라이브를 분할하는 문장이요?

네.

PL/SQL 선언 블록에 TABLE TYPE 변수를 선언합니다.테이블 변수는 인덱스 기준 테이블 또는 배열이라고도 합니다.테이블 변수에는 스칼라 또는 레코드 데이터 형식과 BINARY_ 유형의 기본 키를 더한 하나의 열이 포함됩니다.정수구문:

DECLARE TYPE_name IS TABLE OF (column_type | variable %)TYPE | table.column%이진수 정수에 의한 유형 [NOT NULL] 지수

-- 그런 다음 variable_name type_name 유형의 TABLE 변수를 선언합니다.

-- TABLE 변수 variable_name(n)에 값을 할당합니다.field_name := '일부 텍스트'; -- 여기서 'n'은 인덱스 값입니다.

참고 자료: http://www.iselfschooling.com/syntax/OraclePLSQLSyntax.htm

Global Temporary Tables도 참조할 수 있습니다.

아래 솔루션은 현재 제가 할 수 있는 SQL Server와 가장 가까운 솔루션입니다.

오브젝트:


유형 T_Numbers 생성 또는 교체는 번호표이다.
함수 생성 또는 치환 누적(vNumbers T_Numbers)반품 T_NUMBER~하듯이vRet T_NUMBERS;시작한다.SELECT SUM(COLUMN_VALUE)vRet으로 일괄 수집표에서(CAST(vNumbers AS T_Numbers)),

RETURN vRet;종료;

쿼리:


--Query 1: 고정번호 리스트.
선택*표(누적(T_NUMBERS(1, 2, 3, 4, 5))에서);

--Query 2: 쿼리의 번호 목록.
cteNumbers AS 사용 시(듀얼 유니언에서 1 AS를 Column_VALUE로 선택합니다.듀얼 유니언에서 2 AS를 Column_VALUE로 선택듀얼 유니언에서 3 AS를 Column_VALUE로 선택합니다.듀얼 유니언에서 4 AS를 Column_VALUE로 선택합니다.듀얼에서 5 AS를 Column_VALUE로 선택)선택*표에서 ( )축적하다(CAST(COLLECT(COLUMN_VALUE)를 T_NUMBER로 선택)송신원: cteNumbers)));

네, 쿼리의 결과 세트를 유지할 수 있는 타입이 있습니다(TABLE의 기능을 추측할 수 있는 경우).에게 묻습니다. 절차는 다음과 같습니다.

procedure p( p_state in varchar2, p_cursor in out ref_cursor_type )
is
begin
    open p_cursor for select * from table where state = P_STATE;
end;

여기서 p_module은 테이블타입과 비슷합니다.이미 답변한 바와 같이 Oracle에는 결과 세트를 저장할 수 있는 옵션이 많이 있습니다.일반적으로 Oracle PL/SQL은 sqlserver 스크립트보다 훨씬 강력합니다.

oracle의 변수 테이블이 MS SQLServer의 테이블 변수와 같지 않습니다.oracle에서는 java 또는 c#의 일반 배열과 비슷하지만 MS SQL Server에서는 논리 테이블이라고 할 수 있습니다.그러나 SQL Server의 테이블 변수와 동일한 작업을 Oracle에서 수행하고자 하는 경우 커서를 사용할 수 있습니다.

안부 전해요

언급URL : https://stackoverflow.com/questions/670461/does-oracle-have-an-equivalent-of-sql-servers-table-variables

반응형