2012-05-04 4 views
4

ColdFusion (8)을 통해 실행하고자하는 내 SQL (2005)에 사용자 정의 함수가 있습니다. 어떻게 작동시킬 수 있습니까?Coldfusion에서 SQL 함수 실행

[저장 프로 시저가 아니므로 cfstoredproc가 출력되지 않습니다.]

미리 감사드립니다.

답변

14

ColdFusion 데이터 소스에 원하는 UDF에 대한 적절한 EXECUTE 권한이 있다고 가정하면 일반 CFQUERY 블록 내부에서 SQL UDF를 바로 호출 할 수 있습니다. CFQuery 내부에서 select 문을 반환 할 필요는 없습니다. Coldfusion 변수를 데이터베이스에 전달하는 경우 CFQUERYPARAM을 사용하여 안전을 확인하십시오.

UDF를 호출하려면 스키마 *를 포함시켜야합니다. 여기서는 기본 스키마를 사용 했으므로 UDF의 접두사는 "dbo"입니다. dbo.FunctionName()과 같습니다. .

<!--- We want to convert this numeric category into its English name. 
     Thankfully our database administrator has a simple function to 
     resolve it without extra work on our part. ---> 

<cfset myCategory = 100428> 

<!--- We call this Coldfusion variable using CFQUERYPARAM to prevent SQL Injection ---> 

<cfquery datasource="mydatasource" name="test"> 
    SELECT dbo.CategoryAsString(<cfqueryparam cfsqltype="cf_sql_integer" value="#myCategory#">) AS CategoryString 
</cfquery> 

<!--- And output the result here ---> 
<cfdump var="#test.CategoryString#"> 

* 당신은 UDF의 스키마를 포함하지 않는 경우, 당신은 "오류 실행 데이터베이스 쿼리를 얻을 것이다 [매크로 미디어] [SQLServer에 JDBC 드라이버] [SQLServer에] : 여기

은 예입니다 [FUNCTION NAME] '은 (는) 인식 할 수없는 기본 제공 함수 이름이 아닙니다. " (CF 8)

+0

감사합니다. yupe는 매력처럼 작동합니다. – MadushM