Все, что @Scott Stroz сказал в своем ответе, является правдой - 1) вы путаете имена переменных между кодом и встроенной функцией, 2) используете область видимости var, чтобы определить переменную getRKBareDrive внутри вашей функции (не являющуюся частью проблемы) будучи встроенной функцией, но хорошей практикой), и 3) попробуйте CFDUMP результат вместо CFOUTPUT. Однако я не верю, что основная проблема решена, и эта часть вашего вопроса:
Функция sql возвращает курсор ref
Итак, одна вопиющая проблема в том, что вы возвращаете REFCURSOR не простое значение, поэтому вы не можете просто CFOUTPUT его, а вместо этого должны предпринять определенные шаги, чтобы ColdFusion знал, что это набор запросов. REFCURSOR может быть возвращен в вызовах из хранимых процедур через CFPROCRESULT (или через CFPROCPARAM type = "OUT" CFSQLType = "CF_SQL_REFCURSOR", если это возвращаемый параметр, а не результат).
Итак ... попробуйте покрыть вызов CFQUERY для CFSTOREDPROC. Вот пример кода , который предполагает, что вы можете вызывать свой пакет / функцию напрямую как сохраненный процесс по сравнению с запросом . Я удалил встроенную функцию, так как она добавляет здесь слишком много сложности (снова см. Ответ Скотта) - просто попробуйте голый код как способ заставить вызов работать.
<cfstoredproc procedure="pacakagename.functionname" datasource= "#PCW_dsn#">
<cfprocparam type="IN" CFSQLType="CF_SQL_VARCHAR", value="x">
<cfprocparam type="IN" CFSQLType="CF_SQL_VARCHAR", value="y">
<cfprocresult name="bare_drive_result" >
</cfstoredproc>
<cfdump var="#bare_drive_result#">
Если вы видите результаты в дампе, вы сможете заменить дамп и вывести поля внутри курсора ref точно так же, как обычный результат CFQUERY в вызове CFOUTPUT query = "bare_drive_result".
Из Документация CF8 по CFPROCRESULT :
CFML поддерживает тип ссылочного курсора Oracle 8 и 9, который передает
параметр по ссылке. Параметры, которые передаются таким образом, могут быть
выделяется и освобождается из памяти при выполнении одного
приложение. Использовать ссылочные курсоры в пакетах или хранимых
процедуры, используйте тег cfprocresult. Это вызывает ColdFusion JDBC
драйвер базы данных для помещения курсоров ссылок Oracle в набор результатов.
(Вы не можете использовать этот метод с драйверами Oracle ThinClient JDBC.)