Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Топовые новости
Новое

Передача параметров по имени и по значению

Передача параметров по имени и по значениюВ большинстве процедурных языков программирования реализовано два типа передачи параметров: по значению и по ссылке. Основное различие между этими двумя методами состоит в том, что при передаче переменной из вызывающего модуля по значению на самом деле пересылается копия этой переменной. Таким образом, что бы с переданным параметром ни происходило в вызываемой процедуре, это никак не отразится на ее исходном значении в главном модуле. Если же переменная передается по ссылке, на самом деле процедуре передается ее адрес в памяти; таким образом, исходная переменная может быть изменена. В следующем примере (написанном на псевдокоде) проиллюстрирована данная концепция. Во всех трех ведущих СУБД переменные можно передавать как по значению, так и по ссылке, причем первый вариант используется по умолчанию. Как в Oracle, так и в IBM DB2 насчитывается два типа передачи аргументов по ссылке: out и in out (в DB2 это inout). Первый вариант означает, что с помощью данного аргумента вызываемой процедуре нельзя передавать значения (обычно в этом случае передается null). Однако сама процедура может присвоить значение этому аргументу и вернуть его в главный модуль. Второй тип предполагает, что значение реально передается подпрограмме и может быть использовано в вычислениях, после чего быть возвращено в вызывающий модуль. В Microsoft SQL Server существует только один тип передачи по ссылке — output, приблизительно соответствующий типу in out в Oracle. Иногда нужно, чтобы программа выполняла разные действия в зависимости от некоторого условия. Для примера предположим, что в зависимости от значения, извлеченного из таблицы, его нужно умножить на разные числа. Главной условной инструкцией во всех трех расширениях SQL ведущих СУБД является тот или иной тип конструкции