2012-05-04 3 views
4

У меня есть определенная пользователем функция в моей MS SQL (2005), которую я хотел бы выполнить с помощью Coldfusion (8). Любая идея, как я могу заставить это работать?Выполнение SQL-функций в Coldfusion

[Это не хранимая процедура, поэтому cfstoredproc отсутствует].

Заранее спасибо.

ответ

14

Вы можете вызвать SQL UDF прямо внутри обычного блока CFQUERY, если ваш источник данных Coldfusion имеет соответствующие разрешения EXECUTE для нужного UDF. Вам не нужно возвращать выбранный оператор внутри CFQuery. Не забудьте использовать CFQUERYPARAM для обеспечения безопасности, если вы передаете переменные Coldfusion в базу данных.

Чтобы вызвать 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#"> 

* Если вы не включают в себя схему ОДС, вы получите «Error Отработка Database Query [Macromedia] [SQLServer JDBC Driver] [SQLServer] [FUNCTION NAME] 'не является признанным встроенным именем функции. " (CF 8)

+0

Спасибо, юпе работает как шарм. – MadushM

Смежные вопросы