Термин «связанная переменная» может быть плохим выбором слов из Adobe. Я думаю, что они означают, что он связан с переменной внутри хранимой процедуры, а не с переменной привязки в смысле «сохранить смысл объяснения» (это должно быть верно как для переменных, так и для переменных). Есть несколько веских причин, чтобы выбрать «out» over «in», и есть также побочные эффекты, которые могут оказаться полезными или могут сжечь вас, если вы их не ожидаете.
Прежде всего, если параметр в хранимой процедуре имеет тип «in», то большинство баз данных не позволит вам назначить ему в proc - очень полезно, когда вы знаете, что переменная не должна изменяться. Вот пример Oracle ...
CREATE PROCEDURE bind_test(p_testin IN NUMBER, p_testout OUT NUMBER) IS
BEGIN
-- p_testin := 100; -- error can not be used as an assignment target
p_testout := 100;
END bind_test;
p_testin не может быть изменен, используется только в таких местах, как «где» статьи или инициировать другие переменные, но p_testout может быть изменен.
Во-вторых, вы можете сделать это на шаг дальше, используя синтаксис cfprocparam «variable =» в режиме холодного слияния и фактически вернуть измененное значение в ColdFusion, не пройдя через cfprocresult. Обратите внимание, в этом примере начальные значения для nTypeIn и nTypeOut как начинаются в 10 ...
<cfset nTypeIn = 10 >
<cfset nTypeOut = 10 >
<cfstoredproc procedure = "bind_test" dataSource = "#ProdDB#" returnCode = "No">
<cfprocparam type="in" cfsqltype="CF_SQL_INTEGER" variable="nTypeIn" value="#nTypeIn#" null="No">
<cfprocparam type="out" cfsqltype="CF_SQL_INTEGER" variable="nTypeOut" value="#nTypeOut#" null="No">
</cfstoredproc>
<cfdump var="#nTypeIn#">
<cfdump var="#nTypeOut#">
В Oracle в конце этого теста nTypeIn будет 10, но nTypeOut будет 100 не 10. Это может быть очень полезно до тех пор, пока вы ожидаете, что база данных хранит proc для ее изменения.
Надеюсь, что пролить немного больше света на вопрос.
@ kevink - Да, +1 на запутанном выборе слова. Как вы говорите, некоторые особенности будут различаться в зависимости от типа базы данных. Но гораздо лучшее описание, чем в документации. – Leigh