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