Ошибка с методом addstoredproc в cfscript

Я вызываю хранимую процедуру с помощью cfscript, но когда я добавляю в вызов метод addProcResult, ColdFusion возвращает ошибку Указанный ключ, результат, не существует в структуре. Удаление метода устраняет ошибку и не влияет на результаты, но я все же хотел бы знать, почему появилась ошибка. Использование <cfstoredproc> и <cfprocparam> не приводит к ошибке. У меня CF9. Мой код ниже.

spService = new storedProc();
spService.setDatasource("mydb");
spService.setProcedure("someSP");
spService.setUsername("TaskRunner");
spService.setPassword("password");
spService.addProcResult(name="result",resultset=1);
spService.execute();

person RHPT    schedule 28.12.2011    source источник
comment
Действительно ли хранимая процедура возвращает набор результатов? Или он возвращает свой ответ через выходной параметр? Procs может делать и то и другое (или ни то, ни другое!)... но если он делает только последнее - вы не получите набор результатов и, следовательно, вам не во что будет вливаться, что может объяснить, почему вы не получаете ошибки после удаление вызова для сохранения/сохранения несуществующего набора результатов   -  person Shawn Holmes    schedule 29.12.2011
comment
Процедура не возвращает набор результатов или вывод. Итак, я думаю, это имеет смысл, но почему при использовании тега не возникает ошибка?   -  person RHPT    schedule 29.12.2011
comment
Я предполагаю: обратная совместимость с предыдущими версиями CF. Увидев, как 9 добавили поддержку вызовов процедур на основе скриптов, у них была гибкость, чтобы выдавать более серьезные ошибки, когда происходила глупость, но у них не было такой роскоши с тегами CF. По совпадению, если вы создадите экземпляр объекта Java и вызовете метод, который возвращает NULL, при попытке CFSET var к его результату, вы получите ошибку Variable is Undefined при попытке прочитать ее, даже если это ясно из кода, который вы называется CFSET. Аналогичная проблема - CFSET все еще проходит, но то, что он содержит, не существует.   -  person Shawn Holmes    schedule 29.12.2011


Ответы (1)


Вы получите эту ошибку, если ваша хранимая процедура фактически не возвращает набор результатов (возможно, она возвращает выходной параметр или вообще ничего).

Просто удалите вызов .addProcResult(), и все будет в порядке.

person Shawn Holmes    schedule 28.12.2011