Oracle ha un equivalente delle variabili di tabella di SQL Server?

In SQL Server, è ansible dichiarare una variabile di tabella ( DECLARE @table TABLE ), che viene prodotta mentre lo script viene eseguito e quindi rimosso dalla memoria.

Oracle ha una funzione simile? O sono bloccato con le DROP CREATE / DROP che segmentano il mio disco rigido?

Sì.

Dichiarare le variabili TABLE TYPE in un blocco dichiarativo PL / SQL. Le variabili di tabella sono anche conosciute come tabella index-by o array. La variabile table contiene una colonna che deve essere un tipo di dati scalare o record più una chiave primaria di tipo BINARY_INTEGER. Sintassi:

TIPO DECLARE type_name TABLE OF (tipo_colonna | variabile% TYPE | table.column% TYPE [NOT NULL] INDICE DA BINARY INTEGER;

– Quindi per dichiarare una variabile TABLE di questo tipo: nome_tabella nome_tipo;

– Assegnazione di valori a una variabile TABLE: nome_variabile (n) .field_name: = ‘some text’; – Dove ‘n’ è il valore dell’indice

Rif: http://www.iselfschooling.com/syntax/OraclePLSQLSyntax.htm

Potresti anche dare un’occhiata a Tabelle temporanee globali

Sì, ha un tipo che può contenere il set di risultati di una query (se posso indovinare cosa fa TABLE). Da chiedere a Tom : la tua procedura potrebbe essere simile a questa:

 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; 

dove p_cursor è come un tipo di tabella. Come è già stato risposto ci sono molte opzioni per la memorizzazione dei set di risultati in Oracle. Generalmente Oracle PL / SQL è molto più potente degli script sqlserver.

la tabella in variabile in oracle non è uguale alle variabili di tabella in MS SQLServer. in oracle è come un normale array in java o c #. ma in MS SQLserver è uguale a qualsiasi tabella, è ansible chiamarla tabella logica. ma se vuoi qualcosa in oracle che fa esattamente la stessa cosa della variabile di tabella di SQLserver puoi usare il cursore.

Saluti

La soluzione seguente è la più vicina a SQL Server che posso fare oggi.

Oggetti:

     CREA O SOSTITUISCA IL TIPO T_NUMBERS È TABELLA DEL NUMERO;

     CREARE O SOSTITUIRE L'ACCUMULO DI FUNZIONI (vNumbers T_NUMBERS)
     INVIO T_NUMBERS
     COME
        vRet T_NUMBERS;
     INIZIO
        SELEZIONA SUM (COLUMN_VALUE)
        BULK COLLECT INTO vRet
        FROM TABLE (CAST (vNumbers AS T_NUMBERS));

        RETURN vRet;
     FINE;

Interrogazioni:

     --Query 1: Elenco numeri fisso.
     SELEZIONA
     FROM TABLE (ACCUMULO (T_NUMBERS (1, 2, 3, 4, 5)));

     --Query 2: Elenco numeri da query.
     CON NOME AS
     (
       SELEZIONA 1 COME COLUMN_VALUE FROM DUAL UNION
       SELEZIONA 2 COME COLUMN_VALUE DALL'UNIONE DOPPIA
       SELEZIONA 3 COME COLUMN_VALUE DALL'UNIONE DOPPIA
       SELEZIONA 4 COME COLUMN_VALUE FROM DUAL UNION
       SELEZIONA 5 COME COLUMN_VALUE DA DUAL
     )
     SELEZIONA
     DALLA TABELLA (
             ACCUMULARE(
               (SELEZIONA CAST (COLLECT (COLUMN_VALUE) COME T_NUMBERS)
                Da cteNumbers)
             )
           );