У меня есть база данных Oracle 10g, доступ к которой осуществляется из приложения ASP.NET. Хотя я интенсивно использовал SQL Server во многих различных аспектах и Oracle для запросов и отчетов, я впервые использую Oracle в качестве базы данных OLTP для приложения.
Процедуры на уровне базы данных в пакетах обычно имеют вид:
-- TYPE refcur IS REF CURSOR;
PROCEDURE get_some_stuff(o_cursor OUT refcur, p_param1 IN INTEGER, p_param2 IN INTEGER) IS
BEGIN
OPEN o_cursor FOR
SELECT whatever
FROM whatever
END
Я полагаю, что это делается таким образом, чтобы уровень ADO.NET мог использовать курсор из выходного параметра, и, насколько я понимаю, это приемлемый метод вызова процедур Oracle из .NET.
Например, в SQL Server у нас нет явных курсоров ссылок, если процедура возвращает набор результатов (или несколько наборов результатов), который доступен как набор результатов вывода как в ADO.NET, так и в SSMS, и вы можно просто протестировать SP, выполнив EXEC spname param1, param2
.
Проблема, с которой я столкнулся, заключается в том, что я не знаю, как вызывать их напрямую в SQL в Toad, например, чтобы иметь возможность тестировать изменения на уровне PL / SQL, прежде чем перейти в приложение. Я очень привык к тому, что могу использовать и даже повторно смешивать хранимые процедуры и функции в SQL Server, чтобы иметь возможность реорганизовать уровень интерфейса базы данных, не влияя на внешний интерфейс для кода уровня приложения.