PL / SQL имеет эквивалент параметров массива в C #? - PullRequest
2 голосов
/ 20 октября 2011

В C #, если вы устанавливаете параметр метода, используя ключевое слово params, этот параметр будет принимать неограниченное количество аргументов. При вызове метода вы можете отправить список аргументов этого параметра через запятую.

Имеет ли PL / SQL эквивалентную функцию для параметров метода?

Спасибо!

Андрей Л

Ответы [ 2 ]

4 голосов
/ 20 октября 2011

Нет. Ключевое слово params - это синтаксический сахар, который компилятор преобразует в массив. Oracle, по-видимому, менее «сладкий». Самое близкое, что вы можете получить, - это создать процедуру, которая принимает массив переменного размера (Varray).

3 голосов
/ 20 октября 2011

Вы можете использовать временную таблицу, я полагаю, что это наиболее распространенный вариант, потому что она, вероятно, работает в большинстве СУБД.

В SQL Server 2008 вы можете даже передать параметр таблицы, например:

CREATE TYPE my_table_type AS TABLE(a int NOT NULL,
                                   b int NOT NULL)

CREATE PROCEDURE [dbo].[test]
(
    @model my_table_type readonly
)
AS
BEGIN
END
...