사용자를 인증하는 cffunction (cfc 문서에 있음)이 있습니다. 저장 프로 시저를 참조하며 "out"유형의 cfprocparam을가집니다. Adobe CFML 참조에서 "매개 변수는 데이터베이스 시스템에서만 데이터를받는 데 사용되며 바인딩 된 변수로 매개 변수를 전달합니다."라는 의미입니다.바운드 변수 란 무엇입니까?
바운드 변수 란 무엇입니까? 위키
사용자를 인증하는 cffunction (cfc 문서에 있음)이 있습니다. 저장 프로 시저를 참조하며 "out"유형의 cfprocparam을가집니다. Adobe CFML 참조에서 "매개 변수는 데이터베이스 시스템에서만 데이터를받는 데 사용되며 바인딩 된 변수로 매개 변수를 전달합니다."라는 의미입니다.바운드 변수 란 무엇입니까?
바운드 변수 란 무엇입니까? 위키
"바운드 변수"라는 용어는 Adobe의 단어 중 잘못된 선택 일 수 있습니다. 나는 그들이 저장 프로 시저 안의 변수에 바인드된다는 것을 의미한다고 생각한다. "explain plan을 저장하라"라는 의미의 바인드 변수가 아니다. (변수와 변수 모두에 적용되어야한다.) "in"이상으로 "out"을 선택해야 할 몇 가지 좋은 이유가 있으며, 유용 할 수도있는 부작용이나 예상치 못한 부작용이 있습니다.
먼저 저장 프로 시저의 매개 변수가 "in"유형이면 대부분의 데이터베이스는 변수를 변경하면 안된다는 사실을 알 때 매우 유용합니다. 여기에 오라클의 예입니다 ...
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이 변경 될 수 있으며, 변경 될 수 없습니다.
둘째, ColdFusion에서 cfprocparam "variable ="구문을 사용하여이 단계를 더 멀리 수행하고 cfprocresult를 거치지 않고 ColdFusion에서 변경된 값을 실제로 가져올 수 있습니다. nTypeIn 10 될 것입니다이 테스트의 끝에서 ... 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#">
에 주목하지만, nTypeOut은 매우 유용 할 수 있습니다 (100)하지 (10)이 될 것입니다 만큼 당신이 데이터베이스 proc을 변경 기대하고있다.
희망에 대해 조금 더 밝혀주는 희망.
:
(연산) 할당 된 저장 위치를 갖는 값 때문에 변수와 관련되는 변수. 프로그래밍 언어가 표준 알 수없는 값, 무한대 등의 표현을 구현하는 경우 변수에 바인딩 된 값은이 중 하나 일 수 있습니다.
통지 위치에 결합되지 않은 굵은 부분
변수 자유 변수로 알려져있다.
@kevink - 예, 혼란스러운 단어 선택에 +1. 당신이 말했듯이, 몇몇 세부 사항은 데이터베이스 유형에 따라 달라질 것입니다. 그러나 문서에서보다 훨씬 더 나은 설명. – Leigh