Явный курсор против неявного курсора
Когда дело доходит до баз данных, курсор - это управляющая структура, которая позволяет перемещаться по записям в базе данных. Курсор предоставляет механизм для присвоения имени оператору выбора SQL, а затем его можно использовать для управления информацией внутри этого оператора SQL. Неявные курсоры автоматически создаются и используются каждый раз, когда в PL / SQL выдается оператор Select, когда явно не определен курсор. Явные курсоры, как следует из названия, явно определяются разработчиком. В PL / SQL явный курсор - это фактически именованный запрос, определенный с помощью курсора ключевого слова.
Что такое неявный курсор?
Неявные курсоры автоматически создаются и используются Oracle каждый раз, когда выдается оператор выбора. Если используется неявный курсор, система управления базами данных (СУБД) будет выполнять операции открытия, выборки и закрытия автоматически. Неявные курсоры следует использовать только с операторами SQL, которые возвращают одну строку. Если оператор SQL возвращает более одной строки, использование неявного курсора приведет к ошибке. Неявный курсор автоматически связывается с каждым операторами языка обработки данных (DML), а именно с операторами INSERT, UPDATE и DELETE. Кроме того, неявный курсор используется для обработки операторов SELECT INTO. При извлечении данных с использованием неявных курсоров может возникнуть исключение NO_DATA_FOUND, если оператор SQL не возвращает данных. Более того,неявные курсоры могут вызывать исключения TOO_MANY_ROWS, когда оператор SQL возвращает более одной строки.
Что такое явный курсор?
Как упоминалось ранее, явные курсоры - это запросы, определенные с использованием имени. Явный курсор можно рассматривать как указатель на набор записей, а указатель можно перемещать вперед внутри набора записей. Явные курсоры предоставляют пользователю полный контроль над открытием, закрытием и выборкой данных. Кроме того, можно выбрать несколько строк с помощью явного курсора. Явные курсоры также могут принимать параметры, как любая функция или процедура, так что переменные в курсоре могут изменяться каждый раз при его выполнении. Кроме того, явные курсоры позволяют извлекать целую строку в переменную записи PL / SQL. При использовании явного курсора сначала необходимо объявить его с помощью имени. К атрибутам курсора можно получить доступ, используя имя, данное курсору. После объявления сначала нужно открыть курсор. После этого можно начинать загрузку. Если необходимо получить несколько строк, операцию выборки необходимо выполнить внутри цикла. Наконец, нужно закрыть курсор.
Разница между явным курсором и неявным курсором
Основное различие между неявным курсором и явным курсором состоит в том, что явный курсор должен быть определен явно путем предоставления имени, в то время как неявные курсоры автоматически создаются при выполнении оператора выбора. Более того, несколько строк можно получить с помощью явных курсоров, в то время как неявные курсоры могут получить только одну строку. Также исключения NO_DATA_FOUND и TOO_MANY_ROWS не возникают при использовании явных курсоров, в отличие от неявных курсоров. По сути, неявные курсоры более уязвимы для ошибок данных и обеспечивают меньший программный контроль, чем явные курсоры. Кроме того, неявные курсоры считаются менее эффективными, чем явные.