В чем разница между функцией и процедурой в PL/SQL?В чем разница между функцией и процедурой в PL/SQL?
ответ
Процедура не имеет возвращаемого значения, тогда как функция имеет.
Пример:
CREATE OR REPLACE PROCEDURE my_proc
(p_name IN VARCHAR2 := 'John') as begin ... end
CREATE OR REPLACE FUNCTION my_func
(p_name IN VARCHAR2 := 'John') return varchar2 as begin ... end
Обратите внимание, как функция есть пункт возврата между списком параметров и «как» ключевым словом. Это означает, что, как ожидается, последнее утверждение внутри тела функции читать что-то вроде:
return(my_varchar2_local_variable);
Где my_varchar2_local_variable некоторые varchar2, которые должны быть возвращены этой функцией.
Как небольшое пояснение, вы все равно можете получить значения OUT из процедуры - на самом деле вы можете получить возвращаемое значение для каждого указанного параметра OUT. – GoingTharn
Функция может быть встроена в инструкцию SQL, например.
select foo
,fn_bar (foo)
from foobar
Невозможно выполнить хранимую процедуру. Архитектура оптимизатора запросов ограничивает то, что можно сделать с помощью функций в этом контексте, требуя, чтобы они были чистыми (т. Е. Одни и те же входы всегда дают один и тот же вывод). Это ограничивает то, что можно сделать в функции, но позволяет использовать его в строке в запросе, если он определен как «чистый».
В противном случае функция (необязательно детерминированная) может возвращать переменную или результирующий набор. В случае функции, возвращающей результирующий набор, вы можете присоединить его к другому выбору в запросе. Однако вы не можете использовать такую недетерминированную функцию в коррелированном подзапросе, поскольку оптимизатор не может предсказать, какой набор результатов будет возвращен (это сложно вычислить, как проблема с остановкой).
Возможно, это не имеет смысла, но оптимизатор не мешает вам использовать функции без детерминизма в любом месте. –
- Мы можем вызвать хранимую процедуру внутри хранимой процедуры. Функция, функция внутри функции, функция StoredProcedure внутри функции, но мы не можем вызывать функцию в хранимой процедуре.
- мы можем вызывать функцию внутри оператора select.
- Мы можем вернуть значение из функции, не передавая выходной параметр в качестве параметра хранимой процедуры.
Это то, что я нашел. Пожалуйста, дайте мне знать, если они есть.
Вы ошибаетесь - нет причин, по которым вы не можете вызвать функцию из процедуры. –
Ниже приведены основные различия между процедуры и функции,
- процедура называется/SQL-блок PL, который выполняет одну или несколько задач. где функция называется PL/SQL-блоком, который выполняет определенное действие.
- Процедура может или не может возвращать значение, когда функция должна возвращать одно значение.
- мы можем вызывать функции в инструкции select, где в качестве процедуры мы не можем.
Не может ли функция выполнить более одного действия? Он _returns_ только тип данных. – Ben
Простым способом это делает это значение.
Функции:
Эти Подпрограммы возвращают одно значение; в основном используется для вычисления и возврата значения.
Процедура:
Эти Подпрограммы не возвращают значение непосредственно; в основном используется для выполнения действия.
Пример программы:
CREATE OR REPLACE PROCEDURE greetings
BEGIN
dbms_output.put_line('Hello World!');
END ;
/
Выполнение процедуры Standalone:
Автономная процедура может быть вызвана двумя способами:
• Использование EXECUTE
ключевое слово • Вызов имя процедуры из блока PL/SQL
процедура также может быть вызвана из другой PL/SQL блока:
BEGIN
greetings;
END;
/
Функция:
CREATE OR REPLACE FUNCTION totalEmployees
RETURN number IS
total number(3) := 0;
BEGIN
SELECT count(*) into total
FROM employees;
RETURN total;
END;
/
Следующая программа вызывает функцию totalCustomers
из другого блока
DECLARE
c number(3);
BEGIN
c := totalEmployees();
dbms_output.put_line('Total no. of Employees: ' || c);
END;
/
Обе хранимые процедуры и функции называются bloacks, которые находятся в Da tabase и может выполняться по мере необходимости.
Основных отличий:
1. хранимая процедура может дополнительно возвращаемые значения с использованием параметров из, но также может быть записаны таким образом без возвращения значения .А функцией должна возвращать значение
2. Сохраненная процедура не может использоваться в инструкции select, где, поскольку функции могут использоваться в операторе select.
Практически говоря, я хотел бы найти хранимую процедуру для определенной группы требований и функцию для общего требования, которое может быть разделено между несколькими сценариями для g: сравнение двух строк или обрезка их или принятие последней части, если у нас есть функция для этого, мы могли бы глобально использовать его для любого приложения, которое у нас есть
В нескольких словах - функция возвращает что-то. Вы можете использовать функцию в SQL-запросе. Процедура является частью кода, чтобы что-то делать с данными, но вы не можете вызывать процедуру из запроса, вам нужно запустить ее в PL/SQL-блоке.
- 1. В чем разница между хранимой процедурой и функцией таблицы?
- 2. В чем разница между процедурой и процедурой # в Lisp/Clojure?
- 3. В чем разница между функцией и функцией
- 4. В чем разница между функцией и функцией *
- 5. различия между процедурой и функцией и рутиной?
- 6. Разница между процедурой SQL и процедурой CLR?
- 7. В чем разница между методом и функцией?
- 8. В чем разница между функцией и меткой?
- 9. В чем разница между алгоритмом и функцией?
- 10. В чем разница между подпрограммой и функцией?
- 11. В чем разница между Op и функцией
- 12. В чем разница между функцией() {}() и функции() {}()
- 13. Разница между хранимой процедурой и функцией в SQL Server?
- 14. В чем разница между конструктором и процедурой в записях Delphi?
- 15. В чем разница между «функцией» и «функцией!» в VIM?
- 16. В чем разница между функцией var и функцией в javascript?
- 17. В чем разница между функцией async.compose и функцией underscore.compose?
- 18. В чем разница между функцией (myVar) и (функцией) myVar?
- 19. В чем разница между функцией void и функцией float?
- 20. В чем разница между функцией скрипта и функцией кода?
- 21. В чем разница между функцией обратного вызова и регулярной функцией?
- 22. Разница между процедурой и комбинатором?
- 23. В чем разница между функцией round() & trunc()?
- 24. разница между процедурой и хранимой процедурой sql server?
- 25. В чем разница между функцией rem и mod в sml?
- 26. В чем разница между() => {} и функцией() {} в реакционном javascript?
- 27. В чем разница между функцией «abs» в R и sparkR
- 28. В чем разница между $ scope.myScope = function() и функцией() в AngularJS
- 29. В чем разница между карри и частичной функцией в Рамде?
- 30. В чем разница между скриптом и функцией в MATLAB?
Я бы не согласился с тем, что это дубликат. В общем, термины языка программирования, такие как процедура и функция, не используются одинаково в системе баз данных. Это хороший вопрос, просто ответ «такая же разница, как и с языками программирования: см. <Другой вопрос>». –
У кого-нибудь есть список различий, так как оракул 11g и вперед? Я думаю, теперь мы можем использовать некоторые дополнительные функции в функциях! – MozenRath