2013-12-02 3 views
1
CREATE OR REPLACE TYPE tabela is TABLE OF number; 

Я создал эту таблицу, и теперь я хочу вставить значения, чтобы я мог вернуть их в функцию. Как вставить в этот вид таблицы?Oracle: Вставить в таблицу типа

+0

Я создаю локальной переменной в хранимой функции типа «Tabela», вставить несколько цифр, а затем вернуть его. Таким образом, это PL/SQL-блок. –

ответ

2

SQL Fiddle

Oracle 11g R2 Настройка схемы:

CREATE OR REPLACE TYPE tabela is TABLE OF number; 

CREATE TABLE test (val) AS 
      SELECT 1 FROM DUAL 
UNION ALL SELECT 2 FROM DUAL 
UNION ALL SELECT 4 FROM DUAL 
UNION ALL SELECT 6 FROM DUAL; 

Запрос 1:

-- In SQL 
SELECT tabela(1, 2, 4, 6) FROM DUAL 

Results:

| TABELA(1,2,4,6) | 
|-----------------| 
|   1,2,4,6 | 

Запрос 2:

-- In SQL, getting value from a table 
SELECT CAST(COLLECT(val) AS tabela) AS vals FROM test 

Results:

| VALS | 
|---------| 
| 1,2,4,6 | 

Запрос 3:

-- In PL/SQL 
DECLARE 
    t tabela := tabela(); 
BEGIN 
    t.EXTEND(4); 
    t(1) := 1; 
    t(2) := 2; 
    t(3) := 4; 
    t(4) := 6; 
    -- Do stuff with t. 
END; 

Query 4:

-- In PL/SQL, getting values from a table: 
DECLARE 
    t tabela; 
BEGIN 
    SELECT val 
    BULK COLLECT INTO t 
    FROM test; 
    -- Do stuff with t. 
END; 
+0

Спасибо, что сработал человек. Ты спас меня так много времени. –

Смежные вопросы